使用正则表达式替换 1 次迭代中的所有匹配项

Replace all matches in 1 iteration using regular expressions

本文关键字:迭代 正则表达式 替换      更新时间:2023-10-16

是否可以在 1 次迭代中搜索不同的模式并替换匹配?

例如,如果我有字符串

"Hey {Apple}, where is {Carrots|Peas|Cucumber}?"

是否可以在 1 次迭代中替换大括号内的所有内容,使其看起来像:

"Hey fruit, where is vegetables?

我问的原因是因为我当前的实现首先搜索大括号内只有一个值的所有模式(1 次迭代),然后在(2 次迭代)之后搜索具有 3 个值的大括号,从而进行 x 次迭代,其中 x = "{}"。

谢谢大家,我希望这是有道理的。

这不是真正的正则表达式问题,因为在字符串中进行替换超出了正则表达式的范围。

也就是说,这取决于模式的多样性。 如果你有一组相对较小的模式,那么你可以设置一个从字符串到替换的 Map,然后让你的输出迭代器查找它获得的每个匹配项的替换值。

例如,"苹果"将映射到"

水果","胡萝卜"将映射到"蔬菜","豌豆"也将映射到"蔬菜",等等。