Beliebige Gruppen in JavaScript-Regexp erfassen
Bei der Verwendung von Erfassungsgruppen in regulären JavaScript-Ausdrücken ist es wichtig, die Einschränkungen zu verstehen. Standardmäßig wird nur die letzte Erfassung einer wiederholten Gruppe beibehalten, auch wenn die Gruppe verschachtelt ist.
Beispiel: Verschachtelte Erfassungsgruppe
Bedenken Sie den folgenden regulären Ausdruck:
/^(\s*\w+)+$/
Erwartete Ausgabe:
["foo bar baz", "foo", " bar", " baz"]
Tatsächlich Ausgabe:
["foo bar baz", " baz"]
In diesem Fall wird nur die zuletzt erfasste Gruppe „ baz“ zurückgegeben. Dies liegt daran, dass JavaScript nur die endgültige Erfassung für jede wiederholte Gruppe behält.
Optionen für die Erfassung mehrerer Gruppen
Um diese Einschränkung zu überwinden, stehen mehrere Optionen zur Verfügung:
Beispiel: Exec-Schleife und Aufteilung
Hier ist ein Beispiel für die Verwendung einer Exec-Schleife zum Erfassen und Teilen einer verschachtelten Gruppe:
var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>"; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { print(match[1].split(";")); } // Output: // ["c", "d", "e", "f"] // ["xx", "yy", "zz"]
In diesem Beispiel wird die verschachtelte Gruppe als Gruppe 1 erfasst, die dann per Semikolon geteilt wird Trennzeichen.
Verwandte Fragen
Das obige ist der detaillierte Inhalt vonWie erfasst man mehrere Gruppen in einem wiederholten JavaScript-Regex?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!