Java正则表达式多模式组替换

标签 java regex regex-group

假设我有以下字符串

String Context = "old1 old2 old3 old4 old5 old6"

我希望做一个模式:(old2).*(old4)

因此单词 2 将位于 $1 中,而单词 4 将位于 $2 中。

是否有任何函数或方法可以同时替换两个单词字符串?仅使用组变量($1$2)?

因此我可以指定 $1 将变为 new2,而 $2 将变为 new4。 我不想找到字符串 old2old4 并将其替换为 new2new4

最佳答案

只需要一组

如果我理解的话,这就是您所需要的:

String replaced = yourString.replaceAll("old2(.*?)old4", "new2$1new4");

说明

  • old2 匹配文字字符
  • (.*?) 延迟匹配字符(将它们捕获到第 1 组),最多...
  • 旧4
  • 将第 1 组和 new4 的内容替换为 new2

关于Java正则表达式多模式组替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24815523/

相关文章:

php - RegExp PHP 获取多个 span 标签之间的文本

php - 如何获取字符串的最后一段?

regex - 有什么作用? : in a regular expression mean?

javascript - 正则表达式查找 char '.' 除了以 @ 开头的单词

java - 如何以编程方式运行 Java 编译器时添加依赖项

JAVA Md5 返回非确定性结果

java - 将 Android ListView 行高设置为最大行

javascript - 只允许数字的正则表达式

javascript - 如何从给定的正则表达式中删除定界符?

java - 如何在不编写已经很简单的方法的情况下简化类?