Heim > Web-Frontend > js-Tutorial > js Lazy Matching und Greedy Matching-Nutzungsanalyse für reguläre Ausdrücke

js Lazy Matching und Greedy Matching-Nutzungsanalyse für reguläre Ausdrücke

高洛峰
Freigeben: 2017-01-09 16:37:07
Original
1438 Leute haben es durchsucht

Die Beispiele in diesem Artikel beschreiben die Verwendung von Lazy Matching und Greedy Matching von regulären js-Ausdrücken. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Bevor wir über den Greedy-Modus und den Lazy-Modus sprechen, werfen wir einen Blick auf die Grundlagen der JS-Regelmäßigkeit:

Grundlagen des Schreibens:

①Nicht erforderlich. Doppelte Anführungszeichen, direkt //contain => /wehfwue123123/.test();

②Backslash bedeutet Escape =>/.jpg$/

③Grundlegende Verwendung: .test (str);

Syntax:

①Anchor-Klasse

/^a/=>Beginnt mit „a“

/ > endet mit „.jpg“

②Zeichenklasse

[abc]: a oder b oder c

[0-9]: eine Zahl

[a-z]: ein Buchstabe

: beliebiges Zeichen

③ Metazeichen

^: wird in [] verwendet, um nicht anzuzeigen, in [] Es beginnt mit

d: [0-9]

s: Leerzeichen

w: [A-Za-z0-9_]

D: [^d]- Nicht-Zahl

S: Nicht-Leerzeichen

④Quantifizierer

{m,n}: m bis n-mal

Metazeichendarstellung:

*: {0,}

?: {0,1}

+: {1,}

Schwierigkeit: Greedy Pattern/Lazy Mode

Gieriger Modus – Bei erfolgreichem Abgleich so viel wie möglich abgleichen

Lazy-Modus – Bei erfolgreichem Abgleich so wenig wie möglich abgleichen

Erklärung 1: Sowohl Code als auch Text

Die Verwendung gieriger und fauler Quantoren in regulären Ausdrücken kann den Ausdrucksvergleichsprozess steuern. Kennen wir Quantoren? , *, + bedeutet, dass Sie die Anzahl der Vorkommen des entsprechenden Musters angeben können. Standardmäßig verwenden wir den gierigen Quantifizierer, um mit der Suche nach der gesamten Zeichenfolge zu beginnen Überprüfen Sie, ob eine Übereinstimmung vorliegt, und führen Sie eine Schleife wie folgt durch, bis eine Übereinstimmung vorliegt oder die Zeichenfolge leer ist, z. B.:

vars ="abbbaabbbaaabbb1234";
varre1=/.*bbb/g;//*是贪婪量词
re1.test(s);
Nach dem Login kopieren

Dieser Übereinstimmungsprozess beginnt mit der gesamten Zeichenfolge:

re1.test("abbbaabbbaaabbb1234");//false ,则去掉最后一个字符4再继续
re1.test("abbbaabbbaaabbb123");//false ,则去掉最后一个字符3再继续
re1.test("abbbaabbbaaabbb12");//false ,则去掉最后一个字符2再继续
re1.test("abbbaabbbaaabbb1");//false ,则去掉最后一个字符1再继续
re1.test("abbbaabbbaaabbb");//true ,结束
Nach dem Login kopieren

Fügen Sie einen weiteren ? nach dem gierigen Quantifizierer hinzu, um ein Lazy-Quantifizierer zu werden, beginnend mit dem ersten davor. Wenn es nicht übereinstimmt, fügen Sie eins hinzu und wiederholen Sie die Schleife bis zum Ende der Zeichenfolge, wobei Sie das obige Beispiel verwenden.

vars ="abbbaabbbaaabbb1234";
varre1=/.*?bbb/g;//*?是惰性量词
re1.test(s);
Nach dem Login kopieren

Der Matching-Prozess ist wie folgt:

re1.test("a");//false, 再加一个
re1.test("ab");//false, 再加一个
re1.test("abb");//false, 再加一个
re1.test("abbb");//true, 匹配了,保存这个结果,再从下一个开始
re1.test("a");//false, 再加一个
re1.test("aa");//false, 再加一个
re1.test("aab");//false, 再加一个
re1.test("aabb");//false, 再加一个
re1.test("aabbb");//true, 匹配了,保存这个结果,再从下一个开始
Nach dem Login kopieren

Zusammenfassung :

Die standardmäßige gierige Übereinstimmung ist von hinten nach vorne, die maximale Länge der Übereinstimmung, die verzögerte Übereinstimmung besteht darin, einen Quantifizierer danach hinzuzufügen? Der Abgleich beginnt am Anfang der Zeichenfolge und entspricht der Mindestlänge

. Ich hoffe, dass dieser Artikel für alle in der JavaScript-Programmierung hilfreich ist.

Weitere Artikel zu js-Regular-Expression-Lazy-Matching und Greedy-Matching-Nutzungsanalyse finden Sie auf der chinesischen PHP-Website!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage