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

标签 java regex ascii lexical-analysis

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

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

最佳答案

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

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

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

关于java - 什么是控制字符的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893759/

相关文章:

java - 如何在compileJava之前执行 'JavaExec'类型的任务

java - 将字符串格式的日期解析为公历,包含小时和分钟

c# - 当我期待 3 时只得到一场比赛

python utf-8列表和utf-8字符串的交集

Bash:将非 ASCII 字符转换为 ASCII

Python 将 html ascii 编码的文本转换为 utf8

java - 'org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: Maybe' 是什么意思?

java - REST API 版本控制

java - EasyRec vs PredictionIO vs Apache Mahout

MySQL REGEX 不能正常工作