Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung des wiederholten Abgleichs im Tutorial zu regulären Ausdrücken

高洛峰
Freigeben: 2017-01-09 16:01:55
Original
1577 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt das Tutorial zum wiederholten Abgleich regulärer Ausdrücke. Teilen Sie es wie folgt mit allen:

Hinweis: In allen Beispielen werden die Ergebnisse der regulären Ausdrücke zwischen [und] im Quelltext eingefügt. Einige Beispiele werden mit Java implementiert Der Einsatz regulärer Ausdrücke in Java selbst wird an den entsprechenden Stellen erläutert. Alle Java-Beispiele werden unter JDK1.6.0_13 getestet.

1. Wie viele Übereinstimmungen gibt es?

In den vorherigen Artikeln ging es um die Zuordnung eines Zeichens, aber ein Zeichen oder eine Reihe von Zeichen muss mehrmals übereinstimmen. Wenn Sie beispielsweise eine E-Mail-Adresse mit der oben genannten Methode abgleichen möchten, schreibt jemand möglicherweise einen regulären Ausdruck wie w@w.w, dieser kann jedoch nur mit Adressen wie a@b.c übereinstimmen, was offensichtlich falsch ist. Schauen wir uns als Nächstes an, wie das geht um E-Mail-Adressen abzugleichen.

Zunächst müssen Sie den Aufbau einer E-Mail-Adresse kennen: eine Gruppe von Zeichen, die mit einem alphanumerischen Zeichen oder einem Unterstrich beginnen, gefolgt vom @-Symbol und dann dem Domänennamen, also Benutzername@Domänenname Adresse. Dies hängt jedoch auch vom jeweiligen E-Mail-Dienstanbieter ab. Einige erlauben auch Zeichen in Benutzernamen.

1. Passen Sie ein oder mehrere Zeichen an

Um mehrere Wiederholungen desselben Zeichens (oder Satzes von Zeichen) zuzuordnen, fügen Sie einfach ein „+“ als Suffix hinzu. + entspricht einem oder mehreren Zeichen (mindestens einem). Beispiel: a entspricht einem selbst, a+ entspricht einem oder mehreren aufeinanderfolgenden a; [0-9]+ entspricht mehreren aufeinanderfolgenden Zahlen.

Hinweis: Beim Hinzufügen eines +-Suffixes zu einem Zeichensatz muss das + außerhalb des Zeichensatzes platziert werden, sonst handelt es sich nicht um eine wiederholte Übereinstimmung. Beispielsweise stellt [0-9+] eine Zahl oder ein +-Zeichen dar. Obwohl es grammatikalisch korrekt ist, ist es nicht das, was wir wollen.

Text: Hallo, mhmyqn@qq.com oder mhmyqn@126.com ist meine E-Mail.

Regulärer Ausdruck: w+@(w+.)+w+

Ergebnis: Hallo, [mhmyqn@qq.com] oder [mhmyqn@126.com] ist meine E-Mail.

Analyse: w+ kann mit einem oder mehreren Zeichen übereinstimmen, und der Unterausdruck (w+.)+ kann mit einer Zeichenfolge wie übereinstimmen xxxx.edu endet nicht mit einem ., daher steht am Ende ein w+. E-Mail-Adressen wie mhmyqn@xxxx.edu.cn werden ebenfalls abgeglichen.

2. Passen Sie null oder mehr Zeichen an, indem Sie das Metazeichen * verwenden. Die Verwendung ist genau die gleiche wie bei +, setzen Sie es einfach neben das Zeichen oder das Zeichen Nach dem Satz können Sie null oder mehrere aufeinanderfolgende Vorkommen des Zeichens (oder Zeichensatzes) abgleichen. Beispielsweise kann der reguläre Ausdruck ab*c mit ac, abc, abbbbc usw. übereinstimmen.

3. Übereinstimmung mit null oder einem Zeichen

Verwenden Sie das Metazeichen ?, um mit null oder einem Zeichen übereinzustimmen. Wie im vorherigen Artikel erwähnt, wird der reguläre Ausdruck rnrn verwendet, um eine Leerzeile abzugleichen, aber unter Unix und Linux ist r nicht erforderlich, sodass das Metazeichen ?, r?nr?n verwendet werden kann, um Leerzeilen in Windows abzugleichen. sowie Entspricht Leerzeilen unter Unix und Linux. Sehen wir uns ein Beispiel einer URL an, die dem http- oder https-Protokoll entspricht:

Text: Die URL lautet http://www.mikan.com. Um eine sichere Verbindung herzustellen, verwenden Sie stattdessen https://www.mikan.com .

Regulärer Ausdruck: https?://(w+.)+w+

Ergebnis: Die URL ist [http://www.mikan.com], um eine sichere Verbindung herzustellen, verwenden Sie [https : //www.mikan.com] stattdessen.

Analyse: Dieses Muster beginnt mit https?, was bedeutet, dass das Zeichen davor ? vorhanden sein kann oder nicht, sodass es mit http oder https, dem letzten Teil, übereinstimmen kann und der vorhergehende Teil Gleich als Beispiel.

2. Anzahl der übereinstimmenden Wiederholungen

+, * und ? in regulären Ausdrücken lösen viele Probleme, aber:

1) Anzahl der mit + und * übereinstimmenden Zeichen keine Obergrenze für die Anzahl. Wir können keine maximale Anzahl von Zeichen festlegen, mit denen sie übereinstimmen.

2) +, * und ? stimmen mit mindestens einem oder null Zeichen überein. Wir können keine andere Mindestanzahl an Zeichen festlegen, für die sie übereinstimmen.

3) Wenn wir nur * und + verwenden, können wir die Anzahl der übereinstimmenden Zeichen nicht auf eine genaue Zahl festlegen.

Reguläre Ausdrücke stellen eine Syntax zum Festlegen der Anzahl der Wiederholungen bereit. Die Anzahl der Wiederholungen sollte mit den Zeichen { und } angegeben werden, und der Wert sollte dazwischen geschrieben werden.

1. Legen Sie einen genauen Wert für die Anzahl der wiederholten Übereinstimmungen fest.

Wenn Sie einen genauen Wert für die Anzahl der wiederholten Übereinstimmungen festlegen möchten, schreiben Sie einfach die Zahl zwischen { und }. Beispielsweise bedeutet {4}, dass das Zeichen (oder die Zeichengruppe) davor im Originaltext viermal wiederholt werden muss, um als Übereinstimmung zu gelten. Wenn es nur dreimal vorkommt, wird es nicht als Übereinstimmung betrachtet.

Wie in den vorherigen Artikeln für Beispiele für passende Farben auf der Seite erwähnt, können Sie die Anzahl der Wiederholungen zum Abgleichen verwenden: #[[:xdigit:]]{6} oder #[0-9a-fA -F ]{6}, POSIX-Zeichen sind in Java #\p{XDigit}{6}.

2. Legen Sie ein Intervall für die Anzahl wiederholter Übereinstimmungen fest. Die Syntax

{} kann auch verwendet werden, um ein Intervall für die Anzahl wiederholter Übereinstimmungen festzulegen, d. h. einen Mindest- und Höchstwert festzulegen Wert. Solche Intervalle müssen in der Form {n, m} angegeben werden, wobei n>=m>=0. Zum Beispiel ein regulärer Ausdruck, um zu prüfen, ob das Datumsformat korrekt ist (ohne die Gültigkeit des Datums zu prüfen) (z. B. das Datum 2012-08-12 oder 2012-8-12): d{4}-d{1, 2}-d{1, 2}.

3. Wie oft sollte das Spiel mindestens wiederholt werden

Die letzte Verwendung der

{}-Syntax besteht darin, eine minimale Anzahl von Wiederholungen (aber nicht unbedingt eine maximale Anzahl von Wiederholungen) anzugeben, z. B. {3,}, was mindestens 3 Wiederholungen angibt. Hinweis: In {3,} muss ein Komma stehen und nach dem Komma darf kein Leerzeichen stehen. Sonst geht etwas schief.

Sehen wir uns ein Beispiel an: Verwenden Sie reguläre Ausdrücke, um alle Beträge über 100 $ zu finden:

Text:

25,36 $

125,36 $

205,0 $

2500,44 $

44,30 $

Regulärer Ausdruck: $d{3,}.d{2}

Ergebnis:

25,36 $

【125,36 $】

【205,0 $】

【2500,44 $】

44,30 $

+,*,?Ja Ausgedrückt als Anzahl der Wiederholungen:

+ ist äquivalent zu {1,}

* ist äquivalent zu {0,}

ist äquivalent zu {0,1}

3. Übereinstimmung verhindern

Kann nur null oder ein Zeichen haben, {n} und {n,m} haben auch eine Obergrenze für die Anzahl der Wiederholungen, aber wie *, +, {n, } hat keine Obergrenze, was manchmal zu einer Überanpassung führt.

Sehen wir uns ein Beispiel für die Zuordnung eines HTML-Tags an

Text:

Gestern ist Geschichte, morgen ist ein Rätsel< ;/ B>, aber heute ist ein Geschenk.

Regulärer Ausdruck: <[Bb]>.*

Ergebnis:

Gestern ist [Geschichte, morgen ist ein Rätsel, aber heute ist ein Geschenk].

Analyse: <[Bb]> trifft auf -Tags zu (ohne Berücksichtigung der Groß- und Kleinschreibung), Aber das Ergebnis ist nicht wie erwartet. Es gibt drei Übereinstimmungen nach dem ersten -Tag.

Warum passiert das? Da * und + beide gierige Metazeichen sind, ist ihr Verhalten beim Abgleich umso besser. Sie versuchen ihr Bestes, um vom Anfang eines Textes bis zum Ende des Textes zu passen, und nicht vom Anfang des Textes bis Die erste Übereinstimmung wird gefunden.

Lazy-Versionen dieser Metazeichen können verwendet werden, wenn solch ein gieriges Verhalten nicht erforderlich ist. Faul bedeutet, so wenige Zeichen wie möglich zu finden, im Gegensatz zu gierig. Faule Metazeichen müssen nur ein ?-Suffix an gierige Metazeichen anhängen. Hier ist die Lazy-Version des gierigen Metazeichens:

* *?

+ >Im obigen Beispiel muss der reguläre Ausdruck also nur in <[Bb]> geändert werden. *?. Das Ergebnis ist wie folgt:

history< /b>

mystery

gift

IV. Zusammenfassung

Regulärer Ausdruck Die wahre Kraft der Formel spiegelt sich in der passenden Anzahl von Wiederholungen wider. Hier stellen wir die Verwendung der Metazeichen +, * und ? vor. Wenn Sie die Anzahl der Übereinstimmungen genau bestimmen möchten, verwenden Sie {}. Es gibt zwei Arten von Metazeichen: Gierig und Lazy. Wenn Sie übermäßige Übereinstimmungen verhindern müssen, verwenden Sie bitte Lazy-Metazeichen, um reguläre Ausdrücke zu erstellen. Der Positionsabgleich wird im nächsten Artikel vorgestellt.

Ich hoffe, dass dieser Artikel für alle hilfreich ist, die reguläre Ausdrücke lernen möchten.

Weitere Tutorials zu regulären Ausdrücken zum wiederholten Abgleich und verwandte Artikel 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!