Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Gruppierung regulärer Ausdrücke (mit Code)

Detaillierte Erläuterung der Gruppierung regulärer Ausdrücke (mit Code)

php中世界最好的语言
php中世界最好的语言Original
2018-03-30 11:39:342039Durchsuche

Dieses Mal erkläre ich Ihnen ausführlich die Gruppierung von regulären Ausdrücken (mit Code), welche Vorsichtsmaßnahmen für die Gruppierung von regulären Ausdrücken gelten, und das Folgende ist ein praktischer Fall schau doch einmal vorbei.

Gruppierung regulärer Ausdrücke:
Wenn Sie 3 Zahlen zuordnen möchten, kann der reguläre Ausdruck wie folgt geschrieben werden:

d{3}

Der obige Code verwendet wiederholte Quantoren, um dreistellige Zahlen abzugleichen.
Aber in tatsächlichen Anwendungen müssen oft mehrere Zeichen wiederholt werden. Wenn ich beispielsweise zwei Zeichen ab wiederholen möchte, ist es nicht angebracht, den folgenden Code zu verwenden:

ab{3}

Der obige reguläre Ausdruck kann nur dreimal wiederholt werden b.
Um mehrere Zeichen zu wiederholen, können Sie Klammern verwenden, um Unterausdrücke oder Gruppen anzugeben, um diese Funktion zu erreichen, zum Beispiel:

(ab){3}

Der obige reguläre Ausdruck kann ab wiederholen.
Die sogenannte Gruppierung besteht darin, einige Elemente mithilfe von Klammern einzuschließen und sie zu unabhängigen logischen Domänen zu machen. Anschließend kann der Inhalt der Klammern wie eine unabhängige Einheit verarbeitet werden.

Sehen Sie sich unten ein Codebeispiel an:

(d{1,3}.){3}d{1,3}

Das Obige ist ein einfacher, mit der IP übereinstimmender regulärer Ausdruck. Der in Klammern eingeschlossene Inhalt wird als unabhängiges logisches Feld verarbeitet.
Die Rolle der Gruppierung:
In regulären Ausdrücken spielt die Gruppierung eine entscheidende Rolle. Hier finden Sie eine kurze Einführung in ihre Funktion.

1. Spielt die ursprüngliche Gruppierungsrolle:

Gruppieren Sie einzelne Elemente, um Unterausdrücke zu synthetisieren, sodass sie wie ein einzelnes Zeichen verarbeitet werden können. Wenden Sie |, +, * an. oder ? und andere Metazeichen , um sie zu bedienen. Der Beispielcode lautet wie folgt:

var str="I love javascript and java";
console.log(str.match(/java(script)?/gi));
Wie aus den laufenden Ergebnissen des obigen Codes ersichtlich ist, können reguläre Ausdrücke sowohl mit

StringsJavascript als auch mit Java übereinstimmen weil Gruppierung in regulären Ausdrücken verwendet wird und wiederholte Quantoren verwendet werden? , kann dafür sorgen, dass der vorherige Unterausdruck 0 oder 1 Mal wiederholt wird.

2. Untermuster definieren:

Eine weitere sehr wichtige Rolle der Gruppierung besteht darin, Untermuster im gesamten Muster zu definieren.

Wenn ein regulärer Ausdruck erfolgreich mit der Zielzeichenfolge übereinstimmt, kann der Teil, der mit dem tiefgestellten Ausdruck in Klammern übereinstimmt, aus der Zielzeichenfolge extrahiert werden.
Wenn wir eine Zeichenfolge abgleichen, die mit einer Zahl beginnt und auf die ein oder mehrere Buchstaben folgen, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird, kann der reguläre Ausdruck wie folgt geschrieben werden:

/d[a-zA-Z]+/

Wenn uns die Startzahl wirklich am Herzen liegt und wir sie brauchen, können wir den Zahlenteil des regulären Ausdrucks in Klammern setzen, um die Zahl aus der abgerufenen Übereinstimmung zu extrahieren.

/(d)[a-zA-Z]+/

3. Unterausdrücke zitieren: In der regulären Ausdruckssyntax können Sie am Ende desselben Ausdrucks auf den vorherigen Unterausdruck verweisen. Dies erreichen Sie, indem Sie der Zahl „“ folgen. Diese Zahl gibt die Position des in Klammern gesetzten Ausdrucks im regulären Ausdruck an. Beispielsweise ist 1 der erste Unterausdruck mit Klammern und natürlich 2 der zweite Unterausdruck mit Klammern.
Besonderer Hinweis: Da Unterausdrücke ineinander verschachtelt sein können, müssen Sie bei der Berechnung der Position des Unterausdrucks nur die Position der linken Klammer bestimmen. Zum Beispiel:

/(java(script))/

Im obigen regulären Ausdruck kann die verschachtelte Unterdarstellung durch 2 dargestellt werden.

Der Verweis auf einen Unterausdruck ist nicht das übereinstimmende Muster des Verweises, sondern ein Verweis auf den übereinstimmenden Inhalt des Unterausdrucks. Im Allgemeinen werden Verweise auf Unterausdrücke verwendet, um eine Einschränkung zu implementieren:

/(['"])[^'"]*1/

Normalerweise stimmen die linken und rechten Anführungszeichen überein. dann muss das Ende ebenfalls ein doppeltes Anführungszeichen sein, wenn ihm ein einfaches Anführungszeichen vorangestellt ist, muss das Ende ebenfalls ein einfaches Anführungszeichen sein und es dürfen keine anderen Anführungszeichen in der Mitte der Zeichenfolge stehen, zum Beispiel:

„Script Home heißt Sie willkommen“

‚Willkommen bei Script House‘

Dann implementiert der obige reguläre Ausdruck diese Funktion. Wenn der vorherige Unterausdruck mit einem einfachen Anführungszeichen übereinstimmt, stellt die folgende 1 auch ein einfaches Anführungszeichen dar. Wenn der Unterausdruck ein passendes doppeltes Anführungszeichen darstellt, bedeutet dies ein doppeltes Zitate.
Nicht referenzierte Gruppierung:
Die Gruppierung belegt bestimmte Systemressourcen, insbesondere wenn der reguläre Ausdruck lang ist, und verringert dadurch die Übereinstimmungsgeschwindigkeit. Manchmal dient es nur der Einrichtung einer Gruppe und erfordert keine Referenz. Daher ist die Verwendung einer Gruppierung ohne Referenztyp eine gute Wahl.

/(java(?:script))/

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Wie man reguläre Ausdrücke in JS verwendet, um mehrere Leerzeichen in einer Zeichenfolge durch ein Leerzeichen zu ersetzen

Ausführliche Erklärung der Greedy-, Non-Greedy- und Backtracking-Effizienz unter Verwendung regulärer Ausdrücke in PHP (mit Code)

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Gruppierung regulärer Ausdrücke (mit Code). 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