我试图匹配 \^c 形式的控制字符,其中 c 是控制字符的任何有效字符。我有这个正则表达式,但它当前不起作用:\\[^][@-z]
我认为问题在于插入符(^)是正则表达式解析引擎的一部分。
匹配以下形式的 ASCII 文本字符串^X
使用模式\^.
,仅此而已。匹配以下形式的 ASCII 文本字符串\^X
与图案\\\^.
。您可能希望将该点限制为[?@_\[\]^\\]
, so \\\^[A-Z?@_\[\]^\\]
。更容易读作[?\x40-\x5F]
对于括号内的字符类,因此\\\^[?\x40-\x5F]
对于文字 BACKSLASH,后跟文字 CIRCUMFLEX,然后是变成有效控制字符之一的内容。
请注意,这是打印模式的结果,或者是您从文件中读取的结果。这是您需要传递给正则表达式编译器的内容。如果您将其作为字符串文字,那么您当然必须将每个反斜杠加倍。`\\\\\\^[?\\x40-\\x5F]"
是的,它看起来很疯狂,但那是因为 Java 不像 Groovy 和 Scala(或者 Perl 和 Ruby)那样直接支持正则表达式。正则表达式工作总是更容易,无需额外的 bbaacckksslllllaasshheesssssess。 :)
如果您有真正的控制字符而不是它们的间接表示,您将使用\pC
对于具有属性 GC=Other 的所有文字代码点,或者\p{Cc}
仅用于 GC=Control。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)