Java正则表达式匹配相同特定字符序列之间的所有内容

时间:2013-06-20 08:41:30

标签: java regex

我们以字符串"Something foo part1 foo part2 foo part3"为例。

我想找到以“foo”开头的所有部分,直到另一个“foo”或字符串的结尾,然后替换(将内部部分包装成HTML标记)。所以结果应该是"Something <bar> part1 </bar><bar> part2 </bar><bar> part3</bar>"

我开始使用:"foo(.*?)(foo|$)"并将其替换为"<bar>$1</bar>"。替换似乎没问题,但我需要有关正则表达式本身的帮助。

到目前为止,我已经尝试了很多带有负面观察和其他变化的变化。感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

只需将您的第二组更改为预测

foo(.*?)(?=foo|$)

See it on Regexr

问题是你要匹配你想用作下一个起点的“foo”。您可以使用lookahead assertion来避免这种情况。这样,以下“foo”不匹配,因此用作下一场比赛的开始。