Ich habe unten Code und in dem ich versuche, alle Übereinstimmungen in einem String mit Matcher.group()
zu drucken.
Der obige Code wirft Ausnahme im Thread "main" aus java.lang.IndexOutOfBoundsException: Keine Gruppe 2 Ausnahme.
Also meine Frage ist, wie Matcher.group()
funktioniert und wie Sie sehen, ich werde 3 passende Zeichenfolge haben, wie kann ich alle von ihnen mit dem group()
drucken.
Es ist klar, dass Sie nur eine Gruppe haben:
%Vor%stattdessen müssen Sie zum Beispiel eine Schleife verwenden:
%Vor%Ausgaben
%Vor%Lesen Sie über Gruppen :
Erfassungsgruppe
Klammern gruppieren die Regex zwischen ihnen. Sie erfassen den von der Regex übereinstimmenden Text in ihnen zu einer Nummer Gruppe, die mit einer nummerierten Rückwärtsreferenz wiederverwendet werden kann. Sie erlauben es dir Regex-Operatoren auf die gesamte gruppierte Regex anwenden.
Sie scheinen von den Capture-Gruppen und der Anzahl der Übereinstimmungen in Ihrer Zeichenfolge mit dem angegebenen Muster verwirrt zu sein. In dem von Ihnen verwendeten Muster haben Sie nur eine Erfassungsgruppe :
%Vor%Eine Fanggruppe wird im Muster mit Klammern markiert.
Wenn Sie jede Übereinstimmung Ihres Musters mit der Eingabezeichenfolge abrufen möchten, sollten Sie eine while
loop verwenden:
Jeder Aufruf von Matcher#find()
wendet das Muster vom Anfang bis zum Ende auf die Eingabezeichenfolge an und stellt alle Übereinstimmungen zur Verfügung.
Tags und Links java regex pattern-matching