已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
15天前关闭。
Improve this question
我一直在阅读下面的模式用作Java中String#replaceAll()
的一部分
"[\\p{Cntrl}&&[^\r\n\t]]"
删除各种不可打印的ASCII字符。
如何解释上面的咒语:
- 哪些字符被包括作为要被删除的那些控制字符的一部分?
&&
是什么意思?^
是否意味着它只查看行的开头?
有人能提供一个全面的非技术性解释上述表达?
先谢谢你了。
3条答案
按热度按时间unftdfkk1#
这里有一些东西只在某些类型的正则表达式中可用。您可能会遇到不同语言的实现或可用性方面的差异。
在支持的情况下,您可以定义一个字符类,其中包含多个类。例如,
[[a-z][0-9]]
是[a-z0-9]
的有效等价物。在支持
&&
运算符的地方,它可以用来创建一个字符类,该字符类是两个字符类的交集。例如,[[a-z]&&[^d-w]]
将等价于[abcxyz]
。有很多预定义的字符类可以用
\p{category_name}
引用。在Java中,类别\p{Cntrl}
表示[\x00-\x1F\x7F]
。您可以在java.util.regex.Pattern
的Java扩展中找到示例。(See:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html)
因此,正则表达式匹配
[\x00-\x1F\x7F]
范围内的所有字符,除了字符[\r\n\t]
。pw9qyyiw2#
您可以在 Pattern 类 JavaDoc 中找到此信息。
也就是说,从值 0到1f,以及值 * 7 f *。
&&
代表什么?..."*&&
是 * 字符类交集 * 语法的一部分。例如,以下字符将匹配除 x 和 y 之外的任何字符,从 a 到 z。
^
是否意味着它只查看行的开头?..."*在一个 * 字符类 *
[ ]
中不存在。a2mppw5e3#
该模式将控制字符集
\\p{Cntrl}
x x x(x&&
)中的字符与非换行符、回车符或制表符[^\r\n\t]
的字符集匹配。范例:为了帮助解释,考虑将
\\p{Cntrl}
交换为[a-z]
,将[^\r\n\t]
交换为[^aeiou]
,然后您将拥有一个可用于过滤辅音的模式: