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

时间:2012-07-05 23:44:09

标签: c++ regex boost-regex

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

例如,如果我有字符串

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

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

"Hey fruit, where is vegetables?

我问的原因是因为我当前的实现首先搜索所有在花括号内只有一个值的模式(1次迭代),然后它会在(2次迭代)之后搜索3个值的花括号,因此采用x次迭代,其中x =“{}”。

谢谢你们,我希望这是有道理的。

1 个答案:

答案 0 :(得分:2)

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

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

例如,“Apple”会映射到“Fruit”,而“Carrots”会映射到“vegetables”,而“Peas”也会映射到“蔬菜”等。