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

Fid*_*nik 18 c++ regex c++11

确实在跑

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.

Jan*_*ner 3

因为它在GCC5中被窃听了。它在GCC6MSVC14
中按预期工作。