我一直在用java学习正则表达式。 我想知道在使用java的matcher时使用\ G是否有意义。 我找不到任何与G一起使用的例子:(
执行此类操作与使用\ G?
的输出不同String a = "Pruebaprueba";
Matcher matcher = Pattern.compile("(\\w)").matcher(a);
while ( matcher.find() ) {
// Do something with each letter
}
感谢阅读!
答案 0 :(得分:7)
直接来自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”会在那时失败。