В чем разница между этими двумя ниже? - PullRequest
2 голосов
/ 11 марта 2010
System.out.println(matcher.group(1));
System.out.println(matcher.group());

Мне нравится знать, в чем разница между двумя приведенными выше кодами. Я получаю разные выводы. Кто-нибудь может уточнить это?

Спасибо

Ответы [ 3 ]

8 голосов
/ 11 марта 2010

Вызов group() дает вам всю совпадающую строку, тогда как group(1) дает первую заключенную в скобки группу «Захват» (или, в более общем случае, group(n) даст вам n'th группа захвата, считая левую / открывающую скобку, начиная с 1).

Так, например, если у вас была такая строка ввода:

The quick brown fox

И вы сопоставили следующее регулярное выражение (без кавычек):

"The (\\w+)"

Тогда group() даст вам «быстрый», а group(1) даст вам «быстрый».

Подробнее о том, как все эти регулярные выражения работают в Java, смотрите в разделе java.util.regex.Matcher JavaDoc.

2 голосов
/ 11 марта 2010

Я указываю вам на JavaDocs для Matcher

группа ():

Возвращает входную подпоследовательность, совпадающую с предыдущим совпадением

группа (целое):

Возвращает входную подпоследовательность, захваченную данной группой во время предыдущей операции сопоставления.

1 голос
/ 11 марта 2010

Документ API - это очень хорошее место для поиска в первую очередь.

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