最近在学习Java的regex
部分,今天遇到了一个关于boundry\\G
使用的问题,这是我的代码:
String input = "abcdec";
System.out.println(String.format("Before :'%s' ; after replace : '%s'", input , input.replaceAll("\\Gx?", "!")));
当它打印 Before :'abcdec' 时;替换后: '!abcdec'
,我不知道为什么它会打印这个,在第一次与字符串开头匹配后,它用字符 '!' 替换该位置,但是为什么不能再次匹配?我认为正则表达式'\Gx?'可以匹配每个地方。
我需要您的帮助,感谢您的每一次帮助!谢谢..
最佳答案
我引用here :如果您希望一次搜索从上一次停止的地方继续,您可以使用“\G”模式元素。
这意味着如果没有执行搜索,则\G 只是告诉搜索从字符串的开头开始并在第一个匹配处停止。
这是另一个 example 。请注意,由于第一次替换没有将起始位置从 0 移开,因此再次在字符串的开头添加了一个感叹号。
您对您的计划有何期望?
关于java - 如何处理与边界 '\\G' 关联的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11664405/