如何将(字面)"\ C"作为回归?

LRF*_*LEW 0 java regex

我正在尝试使用String.replaceAll(regex, repl)正则表达式文字"\ C"(不是转义序列),但"\\C"返回正则表达式错误,"\\\\C"创建"\\ C",并"\\\C"使其尝试生成转义序列.我该做什么?

编辑:这是我得到的错误:

java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 1
\C
 ^
    at java.util.regex.Pattern.error(Pattern.java:1713)
    at java.util.regex.Pattern.escape(Pattern.java:2177)
    at java.util.regex.Pattern.atom(Pattern.java:1952)
    at java.util.regex.Pattern.sequence(Pattern.java:1834)
    at java.util.regex.Pattern.expr(Pattern.java:1752)
    at java.util.regex.Pattern.compile(Pattern.java:1460)
    at java.util.regex.Pattern.<init>(Pattern.java:1133)
    at java.util.regex.Pattern.compile(Pattern.java:823)
    at <My Class>.<My Function>(<My Class>.java:<Line>)
Run Code Online (Sandbox Code Playgroud)

等.

编辑:我发现我最大的问题涉及意外返回原始字符串:P.我现在有工作:)

bw_*_*ezi 6

\\\\C是java中匹配字符串的正确正则表达式\C.

"foo bar \C".replaceAll( "\\\\C", "cc" );
// -> "foo bar cc"
Run Code Online (Sandbox Code Playgroud)

这些是规则:

  • 在Java中,你必须逃避\\\
  • \C意味着C escaped(如果C具有特殊含义并且确实需要转义则无关紧要)
  • 因此,如果你想匹配一个"\C"正常的正则表达式的字符串,\\C但是因为它\\\\C在Java中得到了第一个规则.