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

为什么在Java中尝试匹配此正则表达式时会引发此异常?,java,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

我正在尝试匹配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)
致命异常:计时器-0
java.util.regex.PatternSyntaxException:语法错误U_regex_RULE_索引13附近的语法:
var json=({“r”:“^d1”。*});
^
位于com.ibm.icu4jni.regex.NativeRegEx.open(本机方法)
位于java.util.regex.Pattern.compileImpl(Pattern.java:383)
Pattern.(Pattern.java:341)
位于java.util.regex.Pattern.compile(Pattern.java:317)

有人能告诉我我做错了什么吗?

我认为需要对“{}”大括号字符进行转义,因为它们对正则表达式有特殊的意义

这是表示“计数”的一种很长的方法,因此
{0,}
相当于
.*{0,1}
相当于
{2,4}
表示至少两个但不超过四个先前匹配项

是的,它们是量词: