首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java正则表达式多模式组替换

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

Stack Overflow用户
提问于 2014-07-18 08:11:36
回答 3查看 192关注 0票数 0

假设我有以下字符串

代码语言:javascript
复制
String Context = "old1 old2 old3 old4 old5 old6"

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

所以word 2应该在$1中,而word4应该在$2中。

有没有什么函数或方法可以同时替换这两个单词字符串?只使用组变量($1$2)?

所以我可以将$1指定为new2,将$2指定为new4。我不希望必须找到字符串old2old4并将其替换为new2new4

EN

回答 3

Stack Overflow用户

发布于 2014-07-18 08:18:13

只有一个组需要

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

代码语言:javascript
复制
String replaced = yourString.replaceAll("old2(.*?)old4", "new2$1new4");

说明

  • old2匹配文字chars
  • (.*?)懒惰地匹配字符(将它们捕获到组1),将to...
  • old4
  • Replace与组1和new4

的内容new2一起向上

票数 4
EN

Stack Overflow用户

发布于 2014-07-18 08:20:46

你可以考虑在这里使用积极的前视

代码语言:javascript
复制
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是零宽度断言。它们不会消耗字符串中的任何字符。

这将删除“旧的”,将其替换为“新的”断言(24)跟在后面。

票数 2
EN

Stack Overflow用户

发布于 2014-07-18 08:15:46

一个简单的replace怎么样

代码语言:javascript
复制
 "old1 old2 old3 old4 old5 old6".replace("old2", "new2").replace("old4", "new4");

当然,原始字符串、替换目标和替换替换可以是变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24815523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档