Dies ist ein Fehler in der libstdc ++ Implementierung. Sieh dir diese an:
%Vor%Wenn Sie mit gcc kompilieren, gibt das erste (libstdc ++) das völlig falsche Ergebnis 9, -2, 4 zurück und das zweite (boost's implementation) gibt 5, 1, 3 zurück wie erwartet.
Wenn Sie mit clang + libc ++ kompilieren, funktioniert Ihr Code gut.
(Beachten Sie, dass die Regex-Implementierung von libstdc ++ nur teilweise unterstützt wird, wie in Ссылка beschrieben .)
Sie können Ihren regulären Ausdruck so ändern, dass übereinstimmende Teile in Gruppen unterteilt werden:
%Vor%Ausgänge:
%Vor% Beachten Sie, dass Gruppen durch die Klammern ( /* your regex here */ )
angegeben werden und wenn Sie einen bracet-Teil Ihres Ausdrucks erstellen möchten, müssen Sie ihn mit \
ausschließen, was \
im Code ist. Weitere Informationen finden Sie unter Gruppierungskonstrukte .
Diese Frage kann Ihnen auch helfen: Wie durchlaufe ich Ergebnisse von std :: regex_search?
Verwenden Sie auch using namespace std;
nicht am Anfang Ihrer Dateien, es ist eine schlechte Übung.