TatWarum wird regex "([a-z]) ((?! \ 1) [a-z])" Zeichenfolge "aa" in C++ 11?
regex pattern("([a-z])((?!\\1)[a-z])");
cout << regex_match("aa", pattern) << endl;
Ergebnisse in der Ausgabe "1", doch die erste Gruppe abgestimmt ist "a" ausgeführt wird, und wenn ich stattdessen laufen
regex pattern("([a-z])((?!a)[a-z])");
cout << regex_match("aa", pattern) << endl;
I "0" erhalten, wie erwartet.
Beachten Sie, dass genau die gleiche Regex in Python wie erwartet funktioniert 3, das heißt
re.match("([a-z])((?!\\1)[a-z])", "aa")
läuft produziert keine Treffer. Kann jemand erklären, was hier passiert?
Als Referenz verwende ich g ++ (tdm64-1) 5.1.0 mit Flags -O2 und -std = C++ 11.
zeigt 1 für alle Sprachen [hier] (https://regex101.com/r/nUvaOA/1) – NathanOliver
@NathanOliver Sie nur einzelne Schrägstriche verwenden sollten, wenn sie mit regex101 –
@SebastianProske Nun schaut euch das an zu arbeiten. Danke für die Information. TIL. – NathanOliver