小编Fid*_*nik的帖子

为什么正则表达式"([az])((?!\\ 1)[az])"在C++ 11中匹配字符串"aa"?

确实在跑

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

导致输出"1",但匹配的第一组是"a",如果相反,我运行

regex pattern("([a-z])((?!a)[a-z])");
cout << regex_match("aa", pattern) << endl;
Run Code Online (Sandbox Code Playgroud)

我按预期得到"0".

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

re.match("([a-z])((?!\\1)[a-z])", "aa")
Run Code Online (Sandbox Code Playgroud)

不产生任何匹配.有人能解释一下这里发生了什么吗?

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

c++ regex c++11

18
推荐指数
1
解决办法
879
查看次数

标签 统计

c++ ×1

c++11 ×1

regex ×1