如何使用Matcher正确替换字符串中所有出现的模式

时间:2012-01-22 09:06:38

标签: java regex string replace

我使用Matcher查找包含文字的String中的特定模式 正则表达式检查各种模式,例如为简单起见:
\\bword1\\b|(\\b(?:word2(?:(\\s+)word3)?)?)

无论如何,我可以在字符串中找到模式 到目前为止还好。

我想要的是,能够使用Matcher.replaceAll来替换找到的每个模式,使用相同的模式但是添加一些。

E.g。

如果匹配器在某处找到word1,我想用{v}word1{v}替换它。

这是如何做得最好的?我试图添加匹配器在列表中找到的组,然后循环输入字符串以替换所有但显然这不起作用。

更新
我可以匹配我需要的术语和@Luis正则表达式替换,但我需要替换我的String中的 all 。 通过循环并在字符串中执行正则表达式"pattern", "{v}$0{v}"),我打破了之前发生的事件。我需要以某种方式在replaceAll中包含负面的lookbehind,以便了解术语何时被替换

更新
使用@Luis regex和负面的lookbehind它起作用了

1 个答案:

答案 0 :(得分:1)

更新:

"pattern".replaceAll("pattern", "{v}$0{v}"))

我已对此进行了测试,并根据需要返回“{v} pattern {v}”。