首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么正则表达式"([a-z])((?!\\1)[a-z])“将匹配C++11中的字符串"aa”?

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

Stack Overflow用户
提问于 2016-10-22 02:01:07
回答 1查看 1.5K关注 0票数 19

确实在跑步

代码语言:javascript
复制
regex pattern("([a-z])((?!\\1)[a-z])");
cout << regex_match("aa", pattern) << endl;

结果为输出"1",但是匹配的第一个组是"a",如果我运行

代码语言:javascript
复制
regex pattern("([a-z])((?!a)[a-z])");
cout << regex_match("aa", pattern) << endl;

不出所料,我得到了"0“。

请注意,在Python3中,完全相同的正则表达式可以正常工作,即运行

代码语言:javascript
复制
re.match("([a-z])((?!\\1)[a-z])", "aa")

不生成匹配项。有人能解释一下这里发生了什么吗?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-18 22:55:48

因为它被GCC5窃听了。

它在GCC6MSVC14中的工作方式与预期一致。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40182835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档