在 C++11 中,如果正则表达式的匹配项彼此有交集,会发生什么情况?例如,如果源字符串是 "ababa"
并且正则表达式是 "aba"
,首先如果我迭代字符串中正则表达式的匹配项,是否有两个匹配项或只有一个?接下来,如果我使用 regex_replace 将 "aba"
的所有实例替换为 "C"
,最终结果会是什么?
我无法测试这一点,因为我还无法访问支持正则表达式的编译器。
最佳答案
将有一场比赛,替换结果为Cba
。
说明:
- 正则表达式引擎从字符串中的第一个位置启动。
- 它尝试匹配
aba
并成功。 - 它将
aba
替换为C
(结果:Cba
)。 - 它会尝试从当前位置(位于
C
和ba
之间)再次匹配aba
。 - 它在此处失败(并且从下一个位置(最后一个
a
之前)和下一个位置(在字符串末尾)开始)。 - 就是这样。
关于c++ - 当正则表达式匹配重叠时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280380/