Heim > Web-Frontend > js-Tutorial > Ausführliche Erklärung des Lookarounds vor und nach regulären Ausdrücken, Tutorial_regular expression

Ausführliche Erklärung des Lookarounds vor und nach regulären Ausdrücken, Tutorial_regular expression

微波
Freigeben: 2017-06-28 13:47:28
Original
1213 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich das Lookaround vor und nach dem regulären Ausdruck-Tutorial vorgestellt und die Implementierungstechniken und Vorsichtsmaßnahmen der Forward-Lookup- und Backward-Lookup-Funktionen anhand spezifischer Probleme analysiert Wer es braucht, kann auf

zurückgreifen. In diesem Artikel wird die Umsicht vor und nach dem Tutorial zu regulären Ausdrücken anhand von Beispielen erläutert. Geben Sie es wie folgt als Referenz an alle weiter:

Hinweis: In allen Beispielen sind die Ergebnisse der regulären Ausdrucksübereinstimmung im Quelltext [ und ], einige Beispiele werden mit Java implementiert. Wenn es sich um die Verwendung regulärer Ausdrücke in Java selbst handelt, wird dies an der entsprechenden Stelle erläutert. Alle Java-Beispiele werden unter JDK1.6.0_13 getestet.

1. Problemeinführung

Passen Sie in einer HTML-Seite den Text zwischen einem Tag-Paar an, z. B. indem Sie ihn mit den Tags der Seite abgleichen , und :

Text:

Willkommen auf meiner Seite

Regulärer Ausdruck:

<[Tt][Ii][Tt][Ll][Ee]>.*? Analyse: <[Tt][Ii][Tt][Ll][Ee]> bedeutet, dass die Groß-/Kleinschreibung nicht beachtet wird, aber es ist so nicht perfekt, weil wir nur den Text zwischen den Titel-Tags wollen, nicht die Tags selbst. Um dieses Problem zu lösen, müssen wir Lookaround verwenden.

2. Vorwärtssuche Die Vorwärtssuche gibt ein Muster an, das übereinstimmen muss, aber nicht im Ergebnis zurückgegeben wird. Die Vorwärtssuche ist eigentlich ein Unterausdruck, der mit ?= beginnt und auf den der zu vergleichende Text folgt.

Sehen Sie sich ein Beispiel für den Abgleich des Protokollteils einer URL-Adresse an:

Text:

http://blog.csdn.net/mhmyqn

Regulärer Ausdruck: .

+(?=:)

Ergebnis:

[http]://blog.csdn.net/mhmyqn

Analyse: Der Protokollteil in der URL-Adresse ist der Teil vor :, das Muster .+ stimmt mit jedem Text überein, der Unterausdruck (?=:) stimmt mit: überein, aber das übereinstimmende: erscheint nicht im Ergebnis. Wir verwenden ?=, um der Engine für reguläre Ausdrücke anzuzeigen, dass es zwar in Ordnung ist, solange es gefunden wird, aber nicht in das endgültige Rückgabeergebnis einbezogen wird. Wenn Sie hier keinen Vorwärtsvergleich (?=:) verwenden, sondern (:) direkt verwenden, lautet das Übereinstimmungsergebnis http:, einschließlich:, was nicht das ist, was wir wollen.

Hinweis: Die Angaben „Vorne“ und „Rückseite“ in der Vorder- und Rückseitensuche beziehen sich auf die relative Position zwischen dem Muster und dem zu durchsuchenden Text. Links ist die Vorderseite und rechts die Rückseite. Das heißt, die Vorwärtssuche lautet: xxx(?=xxx) und die Rückwärtssuche lautet (?<=xxx)xxx. Als nächstes wird die Rückwärtssuche eingeführt. 3. Rückwärtssuche

Rückwärtssuche

Operator ist?<=. Allerdings unterstützen nicht alle regulären Ausdrucksimplementierungen die Rückwärtssuche. JavaScript

unterstützt die Rückwärtssuche nicht.

Wenn Sie beispielsweise den Preis im Text finden möchten (beginnend mit $, gefolgt von einer Zahl), enthält das Ergebnis nicht das Währungssymbol:

Text:

Kategorie1:136,25 $, Kategorie2:28 $, Kategorie3:88,60 $Regulärer Ausdruck: (?<=$)d+(.d+)?

Ergebnis:

Kategorie1:$【136,25】,Kategorie2:$

【28】

,Kategorie3:$【88,60】

Analyse: (?<=$) Muster entspricht $,d+(.d+)? Muster entspricht ganzen Zahlen oder Dezimalzahlen. Wie aus den Ergebnissen hervorgeht, enthält das Ergebnis nicht das Währungssymbol, sondern nur den Preis. Was würde passieren, wenn wir keine Rückwärtssuche verwenden würden? Verwenden Sie das Muster $d+(.d+)?, das $ in das Ergebnis einbezieht. Die Verwendung des Musters d+(.d+)? wird auch mit den Zahlen in Kategorie1(23) übereinstimmen, was nicht das ist, was wir wollen. Hinweis: Die Länge des Vorwärtssuchmusters ist variabel und sie können Metazeichen wie ., *, + enthalten, während das Rückwärtssuchmuster nur eine feste Länge haben kann und keine , enthalten kann. *, + und andere Metazeichen. 4. Kombinieren Sie Vorwärtssuche und Rückwärtssuche

Verwenden Sie Vorwärtssuche und Rückwärtssuche zusammen, um das vorherige Problem zu lösen

Problem mit Text zwischen HTML-Tags :

Text:

Willkommen auf meiner Seite

Regulärer Ausdruck: (?<=<[Tt][Ii][Tt][Ll][Ee]>).*?(?=)

Ergebnis:<span style="color: #ff6600">【Willkommen auf meiner Seite】</span></title> ; <script type="text/javascript" src="/js/jquery.3.5.2.min.m.js"></script> </head><div style="position: fixed;right: 0;top:100px;width: 125px; z-index:2000;"><div ><a target="_blank" rel="nofollow" href="https://www.520xingyun.com/from/188bet.php" ><img width="120px" height="550px" src="https://www.520xingyun.com/images/188_120.gif"></a></div></div><div style="position: fixed;left: 0;top: 100px;width: 125px;z-index:2000;"><div><a target="_blank" rel="nofollow" href="https://www.520xingyun.com/from/188bet.php"><img width="120px" height="550px" src="https://www.520xingyun.com/images/188_120.gif"></a></div></div></span></p> <p>Analyse: Aus den Ergebnissen ist ersichtlich, dass das Problem perfekt gelöst ist. (?<=<[Tt][Ii][Tt][Ll][Ee]>) ist eine Rückwärtsoperation, die mit <title> übereinstimmt, ihn aber nicht verbraucht, (?=</[Tt ][Ii][Tt][Ll][Ee]>) ist eine Vorwärtsoperation, die mit übereinstimmt, diese aber nicht verbraucht. Das endgültig zurückgegebene Übereinstimmungsergebnis enthält nur den Text zwischen den Tags.

5. Negieren Sie die Vorwärts- und Rückwärtssuche

Die zuvor erwähnte Vorwärtssuche und Rückwärtssuche werden normalerweise zum Abgleichen von Text verwendet und dienen dazu, festzustellen, ob die Position des Textes des zurückgegebenen übereinstimmenden Ergebnisses (durch Angabe, welcher Text vor und nach dem übereinstimmenden Ergebnis stehen muss). Diese Verwendung wird als Vorwärtssuche und Vorwärtssuche bezeichnet. Es gibt auch eine negative Vorwärtssuche und eine negative Rückwärtssuche, die Text finden, der nicht mit einem bestimmten Muster übereinstimmt.

Operatoren für die Suche vor und nach:

(?=) 正向前查找
(?!) 负向前查找
(?<=) 正向后查找
(? 负向后查找

Zum Beispiel gibt es einen Preis in einem Textabschnitt (beginnend mit $ , gefolgt von einer Zahl) und Menge, wir müssen den Preis und die Menge herausfinden, schauen wir uns zuerst den Preis an:

Text: Ich habe 30 $ für 10 Äpfel, 15 Orangen und 10 Birnen bezahlt . Ich habe bei dieser Bestellung 5 $ gespart.

Regulärer Ausdruck: (?<=$)d+

Ergebnis: Ich habe bezahlt „30 $“ für 10 Äpfel, 15 Orangen und 10 Birnen habe ich 【5 $] bei dieser Bestellung gespart Birnen. Ich habe bei dieser Bestellung 5 $ gespart.

Regulärer Ausdruck: b(? Ergebnis:

I Ich habe 30 $ für

【10】 Äpfel, 【15】

Orangen und

【10】 Birnen bezahlt. Ich habe bei dieser Bestellung 5 $ gespart.

Analyse: (? 6. Zusammenfassung Mit der Vorwärts- und Rückwärtssuche können Sie genau steuern, welche Inhalte im endgültigen Matching-Ergebnis enthalten sind. Die Vorher-Nachher-Suchoperation ermöglicht es uns, Unterausdrücke zu verwenden, um den Ort anzugeben, an dem die Textübereinstimmungsoperation stattfindet, und den Effekt zu erzielen, dass sie nur übereinstimmt, aber nicht verbraucht.

PS: Hier sind zwei weitere praktische Tools für reguläre Ausdrücke als Referenz:

Online-Testtool für reguläre JavaScript-Ausdrücke :

http://tools.jb51.net/regex/javascript

Online-Generierungstool für reguläre Ausdrücke:

http://tools.jb51.net/regex/create_reg

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung des Lookarounds vor und nach regulären Ausdrücken, Tutorial_regular expression. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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