„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erfasst man mehrere Gruppen in einem wiederholten JavaScript-Regex?

Wie erfasst man mehrere Gruppen in einem wiederholten JavaScript-Regex?

Veröffentlicht am 26.11.2024
Durchsuche:864

How to Capture Multiple Groups in a Repeated JavaScript Regex?

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 ) $/

Erwartet Ausgabe:

["foo bar baz", "foo", " bar", " baz"]

Tatsächliche Ausgabe:

["foo bar baz", " baz"]

In diesem Fall wird nur die letzte 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:

  • Aufteilung nach Trennzeichen: Verwenden Sie nach Möglichkeit die Zeichenfolgenaufteilung, um die gewünschten Elemente zu trennen Segmente.
  • Exec-Schleife und Aufteilung: Verwenden Sie eine Exec-Schleife, um das Muster innerhalb einer Zeichenfolge wiederholt abzugleichen und die erfasste Gruppe in einzelne Übereinstimmungen aufzuteilen.
  • Mehrstufig Matching: Erfassen Sie die wiederholte Gruppe in einem Match und verwenden Sie dann einen anderen regulären Ausdruck, um die einzelnen Segmente zu extrahieren.

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 anhand des Semikolon-Trennzeichens aufgeteilt wird.

Ähnliche Fragen

  • Wie greifen Sie auf die übereinstimmenden Gruppen in einem JavaScript-Regex zu?
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3