Соответствие регулярному выражению не работает, даже если шаблон правильный - PullRequest
2 голосов
/ 20 декабря 2010

Прошло несколько лет с тех пор, как я использовал регулярные выражения, но если я правильно помню, следующее должно работать:

String test = "axaxa";
Pattern p = Pattern.compile("([a-c])x\1x\1");
Matcher m = p.matcher(test);

m ничего не соответствует на бегу. Это супер упрощенная версия того, что я делаю в своем коде. Этот пример на самом деле взят из учебника Java по регулярным выражениям! Я пытался переписать свой код соответствия html еще с тех пор, когда он не работал, я занялся исследованиями, думая, что сделал что-то не так ... чего, по мнению интернета, нет. Так. Кто-нибудь знает, почему это не работает?

Дополнительная информация, test.matches(the_pattern) возвращает false. Похоже, что группа отступает от этого.

Ответы [ 2 ]

3 голосов
/ 20 декабря 2010

Попробуйте использовать \\1 в темпе \1.

\ - escape-символ в строке Java. Чтобы отправить \1 в движок регулярных выражений, нам нужно экранировать \ как \\1.

1 голос
/ 20 декабря 2010

В Java нам нужно экранировать обратную косую черту:

Pattern p = Pattern.compile("([a-c])x\\1x\\1");
...