Действительно работает
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")
не дает совпадений. Может кто-нибудь объяснить, что здесь происходит?
Просто для справки, я использую g++ (tdm64-1) 5.1.0 с флагами -O2 и -std = С++ 11.