Heim  >  Artikel  >  Web-Frontend  >  So verwenden Sie reguläre Ausdrücke, um Lookarounds zu finden

So verwenden Sie reguläre Ausdrücke, um Lookarounds zu finden

php中世界最好的语言
php中世界最好的语言Original
2018-03-30 09:21:151209Durchsuche

Dieses Mal zeige ich Ihnen, wie Sie reguläre Ausdrücke verwenden, um Lookarounds zu finden. Hier sind praktische Fälle. Die Beispiele in diesem Artikel beschreiben die Umgehung vor und nach dem Tutorial

Regulärer Ausdruck

. 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

Der Rückwärtssuchoperator 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übereinstimmung $,d+(.d+)? Musterübereinstimmung mit Ganzzahl oder Dezimalzahl. 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, sie können Metazeichen wie ., *, + enthalten, während das Rückwärtssuchmuster nur eine feste Länge haben kann enthalten Metazeichen wie ., *, +.

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></head></span> </p> <p style="text-align: left;">Analyse: Wie aus den Ergebnissen hervorgeht, ist das Problem perfekt gelöst. (?<=<[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 oben 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 übereinstimmenden Ergebnisses, der zurückgegeben wird (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 davor und danach:

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

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.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Bitte folgen Sie PHP für weitere spannende Informationen. Andere verwandte Artikel auf der chinesischen Website! Empfohlene Lektüre:

Tutorial zum Positionsabgleich des Tutorials zu regulären Ausdrücken (mit Code)

Regelmäßig mit PHP und JS implementiert passende Passwörter, die Zahlen und Buchstaben kombinieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie reguläre Ausdrücke, um Lookarounds zu finden. 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