Wenn Sie dies auf einer aus drei Buchstaben bestehenden Zeichenfolge ausführen, werden einfach 5 Übereinstimmungen zurückgegeben. Coliru.So rufen Sie eine Hierarchie von Übereinstimmungen aus einer Regex ab
Stattdessen möchte ich zwei "toplevel" Übereinstimmungen abrufen, wobei die erste Übereinstimmung zwei Unterübereinstimmungen enthält. Ich würde gerne in der Lage sein, sie in jede Tiefe zu nisten und einen passenden Baum von Streichhölzern zu finden.
Es scheint, als hätte Boost mit "nested matches" so etwas. Ist das richtig? Und kann ich das in C++ 11 ohne Boost machen?
Extra: ein etwas weniger trivial Spielzeug Beispiel, wo dies sinnvoll sein könnte:
((,[0-9]+)+)((,[a-z])+)
Dies würde eine Reihe von Zahlen übereinstimmen, gefolgt von einer Reihe von Wörtern, die alle durch Komma getrennt. Ich möchte die Zahlenspiele von den Wortspielen trennen, anstatt eine flache Reihe von Spielen zu haben.
Wofür? Was glaubst du, könntest du mit solch einer Einrichtung machen, auf die du nicht verzichten kannst? –
@IgorTandetnik, ich habe gerade ein etwas komplexeres Beispiel hinzugefügt, um dies zu motivieren –
Sie scheinen zu glauben, dass Sie ein separates Spiel für jede Wiederholung der Gruppe bekommen würden. So funktioniert 'std :: regex' nicht. Sie erhalten genau so viele Übereinstimmungen wie im normalen Ausdruck öffnende Parens plus eins. Mit anderen Worten, die Anzahl der zurückgegebenen Übereinstimmungen wird durch die Syntax des Ausdrucks festgelegt und hängt nicht von der Eingabe ab, für die eine Übereinstimmung gefunden wird. –