当正则表达式匹配重叠时会发生什么?
在 C++11 中,如果正则表达式的匹配项彼此有交集,会发生什么情况?例如,如果源字符串是 "ababa"
并且正则表达式是 "aba"
,首先,如果我迭代字符串中正则表达式的匹配项,是否有两个匹配项或只有一个?接下来,如果我使用 regex_replace 将 "aba"
的所有实例替换为 "C"
,最终结果会是什么?
我无法测试它,因为我还无法访问支持正则表达式的编译器。
In C++11 what happens if matches of a regex have intersections with each other? For example, if the source string is "ababa"
and the regex is "aba"
, first if I iterate on matches of the regex in string, are there two matches or only one? And next, if I replace all instances of "aba"
with "C"
using regex_replace, what will be the final result?
I cannot test that because I don't have access to a compiler that supports regex yet.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将有一场比赛,替换结果将为
Cba
。说明:
aba
并成功。aba
替换为C
(结果:Cba
)。C
和ba
之间)再次匹配aba
。a
之前)和下一个位置(在字符串末尾))。There will be one match, and the replacement result will be
Cba
.Explanation:
aba
and succeeds.aba
withC
(result:Cba
).aba
again from the current position (which is betweenC
andba
).a
) and the next (at the end of the string)).