3

我正在使用\\.(.*)}正则表达式模式来搜索我的 Android 测试项目中的特定字符串。当我使用此正则表达式检查在线可用工具时,正则表达式看起来不错。但在 Android 测试项目中,我收到以下错误。

java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 7:
\.(.*)}
^
at java.util.regex.Pattern.compileImpl(Native Method)
at java.util.regex.Pattern.compile(Pattern.java:400)
at java.util.regex.Pattern.<init>(Pattern.java:383)
at java.util.regex.Pattern.compile(Pattern.java:367)

问题是什么?

4

3 回答 3

10

你可以尝试逃避你的}: -

"\\.(.*)\\}"  // escaping `}` not needed in Java

我不知道为什么它在 中不起作用android,但在Java它里面可以正常工作without escaping

但是,如果您使用的是左花括号,那么即使在 Java 中,您也需要对其进行转义:-

"\\.(.*)\\{"  // escaping `{` needed even in Java
于 2012-11-22T09:05:29.450 回答
7

}正如@Rohit Jain 所说,您需要逃脱:

String regex = "\\.(.*)\\}";

您的正则表达式在 java 中确实有效,但由于某种原因它在 android 上失败。

于 2012-11-22T09:08:24.977 回答
0

我面临着同样的问题。我只是用一个

 try{

 }catch (PatternSyntaxException e) {
           e.printStackTrace();
        }

它奏效了。

于 2019-06-04T11:07:27.820 回答