使用正则表达式替换 1 次迭代中的所有匹配项
Replace all matches in 1 iteration using regular expressions
是否可以在 1 次迭代中搜索不同的模式并替换匹配?
例如,如果我有字符串
"Hey {Apple}, where is {Carrots|Peas|Cucumber}?"
是否可以在 1 次迭代中替换大括号内的所有内容,使其看起来像:
"Hey fruit, where is vegetables?
我问的原因是因为我当前的实现首先搜索大括号内只有一个值的所有模式(1 次迭代),然后在(2 次迭代)之后搜索具有 3 个值的大括号,从而进行 x 次迭代,其中 x = "{}"。
谢谢大家,我希望这是有道理的。
这不是真正的正则表达式问题,因为在字符串中进行替换超出了正则表达式的范围。
也就是说,这取决于模式的多样性。 如果你有一组相对较小的模式,那么你可以设置一个从字符串到替换的 Map,然后让你的输出迭代器查找它获得的每个匹配项的替换值。
例如,"苹果"将映射到"水果","胡萝卜"将映射到"蔬菜","豌豆"也将映射到"蔬菜",等等。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 正则表达式使用提升令牌迭代器在单引号和括号之间提取值
- 如何将正则表达式中组的每次迭代都作为一个单独的组
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 有没有办法在一次迭代中进行任意数量的正则表达式替换
- 使用正则表达式替换 1 次迭代中的所有匹配项
- 正则表达式迭代器在Cpp中不起作用
- 如何迭代std::string中所有匹配的正则表达式,使其在c++11 std::regex中的起始位置
- 使用正则表达式迭代器与char *