是否可以在 1 次迭代中搜索不同的模式并替换匹配项?
例如,如果我有字符串
"Hey {Apple}, where is {Carrots|Peas|Cucumber}?"
是否可以在 1 次迭代中替换花括号内的所有内容,使其看起来像:
"Hey fruit, where is vegetables?
我问的原因是因为我当前的实现首先搜索所有在大括号内只有一个值的模式(1 次迭代),然后它在之后搜索具有 3 个值的大括号(2 次迭代),因此进行 x 次迭代,其中 x = "{}"。
谢谢大家,我希望这是有道理的。
最佳答案
这并不是真正的正则表达式问题,因为在字符串中进行替换超出了正则表达式的范围。
也就是说,这取决于图案的多样性。如果您有一组相对较小的模式,那么您可以设置一个从字符串到替换的映射,然后让您的输出迭代器查找它获得的每个匹配项的替换值。
例如,“Apple”会映射到“Fruit”,“Carrots”会映射到“vegetables”,“Peas”也会映射到“vegetables”等。
关于c++ - 使用正则表达式替换 1 次迭代中的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11354040/