Escape ( in regular expression
我正在搜索正则表达式-"。(conflicted copy。"。)为此我编写了以下代码
1 2 3 |
但我得到了例外
Exception in thread"main" java.util.regex.PatternSyntaxException: Unclosed group near index 15
.(conflicted.
我了解编译器认为
有人可以告诉我如何在这里逃脱
转义由
旁注:最好查看返回文字模式字符串String的
1因为前面加反斜杠(
正则表达式中的
"
1 | str.matches(".*\\\\(conflicted.*"); |
另一种选择是使用字符类来像
1 | str.matches(".*[(]conflicted.*"); |
您也可以在需要转义的部分使用
1 | str.matches(".*"+Pattern.quote("(")+"conflicted.*"); |
或者简单地用
1 | str.matches(".*\\\\Q(\\\\Econflicted.*"); |
在正则表达式中,可以通过在前面添加反斜杠来安全地转义所有字符。
请记住,在大多数语言(包括C#,PHP和Java)中,反斜杠本身也是本机转义符,因此需要以非文字字符串对其进行转义,因此需要输入
在正则表达式中使用反斜杠可能需要您在语言级别和正则表达式级别(