Почему выбрасывается это исключение при попытке сопоставить это регулярное выражение в Java? - PullRequest
3 голосов
/ 26 мая 2010

Я пытаюсь сопоставить определенную строку из 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 Ответ

4 голосов
/ 26 мая 2010

Я думаю, вам нужно избегать скобок "{}", так как они означают что-то особенное для регулярных выражений.

Это длинный способ выражения «счетчика», поэтому .{0,} эквивалентно .* .{0,1} эквивалентно .?, а .{2,4} означает не менее двух, но не более четырех из предыдущего совпадения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...