Использование \ G граничного сопоставителя в Java - PullRequest
4 голосов
/ 15 сентября 2009

Я изучал регулярные выражения с Java. Я хотел знать, имеет ли смысл использовать \ G при использовании java's matcher. Я не смог найти пример использования \ G с java: (

Выполнение чего-либо подобного не будет таким же, как при использовании \ G?

String a = "Pruebaprueba";
Matcher matcher = Pattern.compile("(\\w)").matcher(a);
while ( matcher.find() ) {
    // Do something with each letter
}

Спасибо за чтение!

1 Ответ

7 голосов
/ 15 сентября 2009

Прямо от http://java.sun.com/docs/books/tutorial/essential/regex/index.html

Требовать, чтобы матч происходил только в конец предыдущего совпадения, используйте \ G:

Enter your regex: dog 
Enter input string to search: dog dog
I found the text "dog" starting at index 0 and ending at index 3.
I found the text "dog" starting at index 4 and ending at index 7.

Enter your regex: \Gdog 
Enter input string to search: dog dog
I found the text "dog" starting at index 0 and ending at index 3.

Здесь второй пример находит только один матч, потому что второе вхождение "собака" не начинается в конце предыдущий матч.

Так что нет, это не сделало бы точно так же, как ваш пример. Я думаю, что если вы измените регулярное выражение на «(.)», Вы получите тот же эффект, что и «\ G». в этом надуманном примере. Но «(\ w)» будет продолжать поиск после пробела, в то время как «\ G \ w» в этот момент потерпит неудачу.

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