Базовое регулярное выражение Java: получить значение обоих заполнителей - PullRequest
1 голос
/ 28 декабря 2011
String input = scanner.nextLine();
Pattern pattern = Pattern.compile("the [a-z]+ jumped over the [a-z]+ ")
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
    // how do I print out what jumped over what???
}

В этом примере кто-то напечатает что-то вроде «корова прыгнула на луну» или «лиса перепрыгнула через собаку» или «кошка перепрыгнула через мышку» ... Мне нужно будет уметь выяснить, какие ценности они вкладывают в два заполнителя. Поэтому мой вопрос: как мне получить значения двух [a-z] + точек в регулярном выражении.

Ответы [ 3 ]

3 голосов
/ 28 декабря 2011

Вы используете группы захвата, которые отмечены параграфами: "the ([a-z]+) jumped over the ([a-z]+)".

Затем используйте matcher.group(1) и matcher.group(2), чтобы получить их (группа 0 всегда полностью соответствует).

1 голос
/ 28 декабря 2011

В регулярных выражениях группы записываются с использованием парантеза:

Pattern pattern = Pattern.compile("the ([a-z]+) jumped over the ([a-z]+) ");

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

String group1 = matcher.group(1);
String group2 = matcher.group(2);
1 голос
/ 28 декабря 2011

Вы должны использовать группу. Попробуйте использовать это регулярное выражение:

"the ([a-z]+) jumped over the ([a-z]+) "

Затем получите доступ к нему, используя метод group (int). Вот пример:

http://www.exampledepot.com/egs/java.util.regex/GroupInPat.html

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