控制字符的正则表达式是什么?

时间:2011-02-04 01:46:20

标签: java regex ascii lexical-analysis

我正在尝试匹配\ ^ c形式的控制字符,其中c是控制字符的任何有效字符。我有这个正则表达式,但它目前无效:\\[^][@-z]

我认为问题在于插入符号(^)是正则表达式解析引擎的一部分。

2 个答案:

答案 0 :(得分:7)

使用模式^X匹配\^.形式的ASCII文本字符串,仅此而已。将\^X形式的ASCII文本字符串与模式\\\^.匹配。您可能希望将该点限制为[?@_\[\]^\\],因此\\\^[A-Z?@_\[\]^\\]。对于括号中的字符类,它更容易被读作[?\x40-\x5F],因此\\\^[?\x40-\x5F]用于文字BACKSLASH,后跟文字CIRCUMFLEX,后跟变成有效控制字符之一的东西。

请注意,这是打印出模式或从文件中读取的内容的结果。这是你需要传递给正则表达式编译器。如果你把它作为一个字符串文字,你当然必须加倍每个反斜杠。 `\\\\\\^[?\\x40-\\x5F]"是的,这看起来很疯狂,但那是因为Java不直接支持正则表达式,如Groovy和Scala - 或Perl和Ruby - 。没有额外的bbaacckksslllllaasshheesssssess,正则表达式的工作总是更容易。 :)

如果你有真正的控制字符而不是间接表示它们,你可以使用\pC表示所有文字代码点,其属性为GC = Other,或\p{Cc}仅用于GC = Control。

答案 1 :(得分:2)

检查出来:http://www.regular-expressions.info/characters.html。您应该能够使用\ cA到\ cZ来查找控制字符..