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

Cam*_*ker 5 java regex ascii lexical-analysis

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

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

tch*_*ist 7

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

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

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