尝试在Java中匹配此正则表达式时,为什么会抛出此异常?

时间:2010-05-26 03:03:39

标签: java

我正在尝试匹配HTML文档中的特定字符串,并使用此正则表达式模式来抓取它:

Pattern somePattern = Pattern.compile("var json = ({\"r\":\"^d1\".*});");

但是当我尝试在运行时点击该代码时,我收到此错误:

FATAL EXCEPTION: Timer-0
 java.util.regex.PatternSyntaxException: Syntax error U_REGEX_RULE_SYNTAX near index 13:
 var json = ({"r":"^d1".*});
              ^
     at com.ibm.icu4jni.regex.NativeRegEx.open(Native Method)
     at java.util.regex.Pattern.compileImpl(Pattern.java:383)
     at java.util.regex.Pattern.<init>(Pattern.java:341)
     at java.util.regex.Pattern.compile(Pattern.java:317)

有谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:4)

我认为你需要逃避“{}”大括号字符,因为这些字符对正则表达式来说意味着特殊的东西。

这是表达“计数”的长期方式,因此.{0,}相当于.* .{0,1}相当于.?.{2,4}表示至少两个但不多比前一场比赛的四场