java.util.regex.Pattern
的说明中提到\cx
代表x所对应的控制字符。因此,我认为Pattern.compile()
会拒绝除[@-_]
之外的任何字符后面跟着一个\c
,但实际上并不是这样的!正如@tchrist在What is a regular expression for control characters?的答案之一中所评论的那样,根本没有检查范围。我测试了几个来自更高块和星位平面的字符,看起来它仅仅翻转了代码点值的第7个最低位。
那么,这是Javadoc的错误还是实现的错误,还是我理解错了?
\cx
是Java发明的语法还是其他正则表达式引擎支持的,尤其是Perl?在那里如何处理?
\c?
。^?
指的是DEL
控制字符(0x7F
)。 - ikegami