Heim  >  Artikel  >  Web-Frontend  >  Wie erfasst man mehrere Vorkommen einer Gruppe in JavaScript Regex?

Wie erfasst man mehrere Vorkommen einer Gruppe in JavaScript Regex?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-11 03:16:03402Durchsuche

How to Capture Multiple Occurrences of a Group in JavaScript Regex?

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 das folgende Muster:

/<(\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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn