3

我们以字符串"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>". 替换似乎没问题,但我需要正则表达式本身的帮助。

到目前为止,我已经尝试了许多带有负面回顾和其他变体的变体,但都没有成功。感谢您的任何建议。

4

1 回答 1

1

只需将您的第二组更改为前瞻

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

在 Regexr 上查看

问题是您正在匹配要用作下一个起点的“foo”。您可以通过使用前瞻断言来避免这种情况。这样后面的“foo”不匹配,因此用作下一个匹配的开始。

于 2013-06-20T08:44:52.867 回答