gpt4 book ai didi

c++ - 为什么正则表达式 "([a-z])((?!\\1)[a-z])"会匹配 C++11 中的字符串 "aa"?

转载 作者:IT老高 更新时间:2023-10-28 22:05:36 25 4
gpt4 key购买 nike

确实在运行

regex pattern("([a-z])((?!\\1)[a-z])");
cout << regex_match("aa", pattern) << endl;

导致输出“1”,但匹配的第一组是“a”,如果改为运行

regex pattern("([a-z])((?!a)[a-z])");
cout << regex_match("aa", pattern) << endl;

我按预期得到“0”。

请注意,完全相同的正则表达式在 Python 3 中的工作方式与预期完全相同,即正在运行

re.match("([a-z])((?!\\1)[a-z])", "aa")

不产生匹配项。有人可以解释这里发生了什么吗?

仅供引用,我正在使用带有标志 -O2 和 -std=c++11 的 g++ (tdm64-1) 5.1.0。

最佳答案

因为它在 GCC5 中存在错误。
它在 GCC6 中按预期工作和 MSVC14 .

关于c++ - 为什么正则表达式 "([a-z])((?!\\1)[a-z])"会匹配 C++11 中的字符串 "aa"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40182835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com