控制字符的正则表达式是什么?
我正在尝试匹配forms\ ^ c中的控制字符,其中c是控制字符的任何有效字符。 我有这个正则表达式,但它目前无法正常工作: \\[^][@-z]
我认为问题在于插入符号(^)是正则表达式解析引擎的一部分。
使用模式\^.
匹配^X
forms的ASCII文本字符串\^.
,仅此而已。 匹配格式为\^X
的ASCII文本字符串与模式\\\^.
。 您可能希望将该点限制为[?@_\[\]^\\]
,因此\\\^[AZ?@_\[\]^\\]
。 对于括号中的字符类,它更容易被读作[?\x40-\x5F]
,因此对于文字BACKSLASH来说是\\\^[?\x40-\x5F]
,后面跟着一个文字CIRCUMFLEX,然后变成一个有效的控制字符。
请注意,这是打印出模式或从文件中读取的结果。 这是你需要传递给正则表达式编译器。 如果你把它作为一个字符串文字,你当然必须加倍每个反斜杠。 `\\\\\\^[?\\x40-\\x5F]"
是的,这看起来很疯狂,但那是因为Java不支持正则表达式直接作为Groovy和Scala – 或Perl和Ruby – 做。正则表达式工作没有额外的bbaacckksslllllaasshheesssssess总是更容易。:)
如果你有真正的控制字符而不是它们的间接表示,你可以使用\pC
表示GC = Other的所有文字代码点,或者对于GC = Control使用\p{Cc}
。
看看这个: http : //www.regular-expressions.info/characters.html 。 您应该能够使用\ cA到\ cZ来查找控制字符..