Regex работает в других движках, но не в Java Pattern / Matcher - PullRequest
1 голос
/ 06 октября 2011

Я не могу понять, почему это регулярное выражение не работает, я проверил его в php и других движках регулярных выражений, где он отлично работает и соответствует ", AA,".

Pattern p = Pattern.compile("(^|,)AA(,|$)");

Matcher m = p.matcher("A,B,AA,C,D");

//assigns as false  
boolean matches = m.matches();

Примечание: у меня есть метод двоичного поиска с разбиением / массивом для выполнения поиска IN_SET / NOT_IN_SET по строке. Это всего лишь пример, который мне нужно получить, прежде чем применять регулярное выражение в качестве другого варианта сравнения.

Ответы [ 2 ]

4 голосов
/ 06 октября 2011

matches() проверяет всю строку.Вместо этого вы хотите использовать find().

Из API:

matches()

Попытки сопоставить весь регион с шаблоном.

- http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#matches()

и:

find()

Пытается найти следующую подпоследовательность входной последовательности, которая соответствуетшаблон.

- http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#find()

0 голосов
/ 06 октября 2011

Matcher сопоставляет весь регион с шаблоном.Используйте find().

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