Erfassen mehrerer Gruppen in JavaScript Regexp
Bei der Arbeit mit regulären Ausdrücken in JavaScript ist es möglich, mehrere Gruppen von Übereinstimmungen innerhalb einer Zeichenfolge zu erfassen . Allerdings gibt es Einschränkungen hinsichtlich der Anzahl der Gruppen, die erfasst und abgerufen werden können.
Bedenken Sie den folgenden JavaScript-Regexp:
"foo bar baz".match(/^(\s*\w+)+$/)
Man könnte erwarten, dass dieser Regexp ein Array zurückgibt, das das Ganze enthält string „foo bar baz“ sowie jedes einzelne Wort:
["foo bar baz", "foo", " bar", " baz"]
Der reguläre Ausdruck gibt jedoch tatsächlich nur die zuletzt erfasste Übereinstimmung zurück:
["foo bar baz", " baz"]
Dieses Verhalten tritt auf, weil in den meisten Bei Regexp-Varianten wird nur die letzte Erfassung für eine wiederholte Erfassungsgruppe beibehalten. In JavaScript ermöglicht die Wiederholung einer Erfassungsgruppe nur die Erfassung genau der angegebenen Anzahl von Zeichenfolgen pro Übereinstimmung.
Um diese Einschränkung zu überwinden, gibt es mehrere Optionen:
Beispiel:
Zur Übereinstimmung mit der Zeichenfolge
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(";")); }
Dieser Ansatz verwendet zwei Matching-Ebenen, um einzelne Wörter aus der Zeichenfolge zu extrahieren.
Das obige ist der detaillierte Inhalt vonWie können Sie mehrere Gruppen in einem regulären JavaScript-Ausdruck erfassen, wenn bei der Wiederholung nur die letzte Übereinstimmung erhalten bleibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!