如何在 Java 正则表达式中匹配 \Q 和 \E?

Fin*_*sky 2 java regex

我想在 Java 正则表达式中匹配\Q\E。我正在编写一个程序来计算字符串的长度,与模式匹配(该程序假定正则表达式中除了 {some number} 之外没有任何量词,这就是为什么字符串的长度是唯一定义的),我想要首先删除所有像\Qsome text\E. 但是像这样的正则表达式:

"\\Q\\Q\\E\\Q\\E\\E"
Run Code Online (Sandbox Code Playgroud)

显然不起作用。

Mik*_*uel 5

只是逃避反斜杠。该序列\\\\匹配文字反斜杠,因此要匹配文字\Q

"\\\\Q"
Run Code Online (Sandbox Code Playgroud)

并匹配文字\E

"\\\\E"
Run Code Online (Sandbox Code Playgroud)

您可以通过使用[...]如下方式使每个序列与单个字符匹配,从而使其对维护者更具可读性:

"[\\\\][Q]"
Run Code Online (Sandbox Code Playgroud)


Bar*_*ers 5

使用Pattern.quote(...)

String s = "\\Q\\Q\\E\\Q\\E\\E";
String escaped = Pattern.quote(s);
Run Code Online (Sandbox Code Playgroud)