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

时间:2012-02-14 16:21:33

标签: c++ regex stl c++11

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

我无法测试,因为我无法访问支持regex的编译器。

1 个答案:

答案 0 :(得分:2)

将有一个匹配,替换结果将为Cba

说明:

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