c++ - 当正则表达式匹配重叠时会发生什么?

标签 c++ regex stl c++11

在 C++11 中,如果正则表达式的匹配项彼此有交集,会发生什么情况?例如,如果源字符串是 "ababa" 并且正则表达式是 "aba",首先如果我迭代字符串中正则表达式的匹配项,是否有两个匹配项或只有一个?接下来,如果我使用 regex_replace 将 "aba" 的所有实例替换为 "C",最终结果会是什么?

我无法测试这一点,因为我还无法访问支持正则表达式的编译器。

最佳答案

将有一场比赛,替换结果为Cba

说明:

  • 正则表达式引擎从字符串中的第一个位置启动。
  • 它尝试匹配 aba 并成功。
  • 它将 aba 替换为 C(结果:Cba)。
  • 它会尝试从当前位置(位于 Cba 之间)再次匹配 aba
  • 它在此处失败(并且从下一个位置(最后一个 a 之前)和下一个位置(在字符串末尾)开始)。
  • 就是这样。

关于c++ - 当正则表达式匹配重叠时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280380/

相关文章:

c++ - 抑制来自 CPD 的 C/C++ 代码警告

C++:将 double / float 转换为字符串,保留科学记数法和精度

c++ - 客户端在关闭后向收到的数据包发送 RST(SHUT_WR)

c++ - 交换不使用函数作为参数

c++ - 为什么 C++ Compare 不需要整数作为其返回值?

php - 警告 : preg_replace() [function. preg-replace]:未知修饰符 'd'

Java正则表达式替换开头的每个数字

ruby - 如何编写条件 Ruby case 语句并将参数传递到 case 中?

c++ - 类成员指向STL列表的特定节点成员?

c++ - 使用不同容器、C++、STL 进行排序和查询