java - 如何处理与边界 '\\G' 关联的正则表达式?

标签 java regex

最近在学习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/

相关文章:

Java sound api - 扫描 midi 设备

java - 多行正则表达式

java - 将 String.endsWith(..) 与正则表达式等效项进行比较

python - 与正则表达式匹配的字符串的最小长度

java - 如何执行两个maven版本插件?

java - 查找元素所在的 JFrame

java - 如何使用 JAVA 创建 Tomcat keystore 文件

java - 正则表达式测试 md5sum 文件格式

java - 尝试执行正则表达式时可能出现反斜杠转义问题

Java NIO 窗口实现