Beliebige Gruppen in JavaScript Regex erfassen
Bei der Verwendung regulärer Ausdrücke zum Erfassen von Gruppen ist es wichtig, die durch bestimmte Muster auferlegten Einschränkungen zu verstehen. Während wiederholte Erfassungsgruppen verwendet werden können, um mehrere Vorkommen abzugleichen, wird in JavaScript nur die letzte Erfassung beibehalten.
Betrachten Sie das folgende Beispiel:
"foo bar baz".match(/^(\s*\w+)+$/)
In diesem Muster ist die Erfassungsgruppe (s *w ) wird mit dem Quantor wiederholt. Die Engine für reguläre Ausdrücke von JavaScript erfasst jedoch nur das letzte Vorkommen, nicht die Zwischenübereinstimmungen. Als Ergebnis lautet die Ausgabe:
["foo bar baz", " baz"]
Um alle erfassten Übereinstimmungen abzurufen, sollten Sie die folgenden Strategien in Betracht ziehen:
Nach Trennzeichen aufteilen:
Wenn möglich, Teilen Sie die Zeichenfolge anhand vordefinierter Trennzeichen auf, anstatt einen komplexen regulären Ausdruck zu verwenden.
Exec-Schleife mit Wiederholung Gruppen:
Erstellen Sie ein Muster, das die wiederholte Gruppe erfasst, und verwenden Sie dann eine Exec-Schleife, um die Übereinstimmungen zu durchlaufen. Sobald die vollständige Gruppe erfasst ist, teilen Sie sie am inneren Trennzeichen auf.
Mehrstufiges Matching:
Unterteilen Sie das Problem in mehrere Phasen, indem Sie die wiederholte Gruppe in einem Muster erfassen und dann verwenden ein nachfolgendes Muster zum Extrahieren einzelner Übereinstimmungen.
Beispiel:
Zum Abgleichen und Teilen Verwenden Sie für die Zeichenfolge
/<(\w+(;\w+)*)>/g
Dieses Muster erfasst die gesamte wiederholte Gruppe in Gruppe 1. Teilen Sie dann in der Exec-Schleife die erfasste Zeichenfolge mit dem ; Trennzeichen.
var text = "a;b;;g;h;i; ;j;k; "; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { console.log(match[1].split(";")); }
Ausgabe:
["c", "d", "e", "f"] ["xx", "yy", "zz"]
Das obige ist der detaillierte Inhalt vonWie erfasst man mehrere Vorkommen einer Gruppe in JavaScript Regex?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!