有什么问题:模式模式= Pattern.compile(“\\”);

时间:2017-06-07 08:10:06

标签: java regex

我只想使用正则表达式来匹配反斜杠(\)字符,但它会抛出PatternSyntaxException

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at helloworld.HelloWorld.main(HelloWorld.java:20)

1 个答案:

答案 0 :(得分:2)

你只是只使用正则表达式转义字符\来尝试正则表达式(这就是为什么被引发java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \

为了清楚起见,顺便说一句,Java中的斜杠\也是用于标识转义序列(java escape characters)开头的字符,对编译器有特殊意义。因此,如果你想在String中写一个斜杠,你必须加倍它("\\")。

如果你想编写一个搜索斜杠的正则表达式,你必须将其转义,并在Java字符串中翻译正则表达式,你必须再次加倍斜杠。

因此斜杠的正则表达式变为"\\\\"