我想在 Java 正则表达式中匹配\Q和\E。我正在编写一个程序来计算字符串的长度,与模式匹配(该程序假定正则表达式中除了 {some number} 之外没有任何量词,这就是为什么字符串的长度是唯一定义的),我想要首先删除所有像\Qsome text\E. 但是像这样的正则表达式:
"\\Q\\Q\\E\\Q\\E\\E"
Run Code Online (Sandbox Code Playgroud)
显然不起作用。
只是逃避反斜杠。该序列\\\\匹配文字反斜杠,因此要匹配文字\Q:
"\\\\Q"
Run Code Online (Sandbox Code Playgroud)
并匹配文字\E:
"\\\\E"
Run Code Online (Sandbox Code Playgroud)
您可以通过使用[...]如下方式使每个序列与单个字符匹配,从而使其对维护者更具可读性:
"[\\\\][Q]"
Run Code Online (Sandbox Code Playgroud)
String s = "\\Q\\Q\\E\\Q\\E\\E";
String escaped = Pattern.quote(s);
Run Code Online (Sandbox Code Playgroud)