说我有以下字符串
String Context = "old1 old2 old3 old4 old5 old6"
我希望做一个模式:(old2).*(old4)
所以第2个单词位于$1
,而单词4位于$2
。
是否有任何函数或方法可以同时替换两个单词字符串?仅使用组变量($1
和$2
)?
因此,我可以指定$1
将成为new2
而$2
将成为new4
。
我不想找到字符串old2
和old4
并将其替换为new2
和new4
答案 0 :(得分:4)
只需要一个小组
如果我理解,这就是你需要的:
String replaced = yourString.replaceAll("old2(.*?)old4", "new2$1new4");
<强>解释强>
old2
匹配文字字符(.*?)
懒惰匹配字符(将它们捕获到第1组),最多... old4
new2
,第1组的内容和new4
答案 1 :(得分:1)
您可以考虑在此处使用肯定前瞻。
String s = "old1 old2 old3 old4 old5 old6";
String r = s.replaceAll("old(?=[24])", "new");
System.out.println(r); //=> "old1 new2 old3 new4 old5 old6"
Lookarounds是零宽度断言。它们不会消耗字符串上的任何字符。
这将删除“old”,将其替换为“new”,声明其后跟{({1}}或2
)。
答案 2 :(得分:0)
简单的replace
"old1 old2 old3 old4 old5 old6".replace("old2", "new2").replace("old4", "new4");
当然原始String和替换目标以及替换替换可以是变量。