Dieses Mal werde ich Ihnen die Vorsichtsmaßnahmen bei der Verwendung des regelmäßigen wiederholten Abgleichs ausführlich erläutern. Hier ist ein praktischer Fall, schauen wir uns das an.
Die Beispiele in diesem Artikel beschreiben das Tutorial zumregulären Ausdruck zum wiederholten Abgleich. 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. Wie viele Übereinstimmungen gibt esIn den vorherigen Artikeln ging es um die Übereinstimmung mit einem Zeichen, aber es muss eine Übereinstimmung mit einem Zeichen oder einer Reihe von Zeichen gegeben werden mehrmals. Es sollte sein: Wie geht das? 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 anUm mehrere Wiederholungen desselben Zeichens (oder Zeichensatzes) zuzuordnen, geben Sie einfach das Zeichen (oder den Zeichensatz) plus ein ein +-Zeichen als Suffix. + 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 xxxx.edu. übereinstimmen und endet nicht mit einem Zeichen. Es wird also ein w+ hinten. E-Mail-Adressen wie mhmyqn@xxxx.edu.cn werden ebenfalls abgeglichen.
2. Passen Sie null oder mehr Zeichen an, indem Sie das Metazeichen * verwenden. Seine Verwendung ist genau die gleiche wie +, ersetzen Sie es einfach danach ein Zeichen oder Zeichensatz, der mit keinem oder mehreren aufeinanderfolgenden Vorkommen des Zeichens (oder Zeichensatzes) übereinstimmt. Beispielsweise kann der reguläre Ausdruck ab*c mit ac, abc, abbbbc usw. übereinstimmen.3. Passen Sie null oder ein Zeichen an
Passen Sie null oder ein Zeichen mithilfe des Metazeichens an ?. 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
https://www.mikan.comstattdessen.
Regulärer Ausdruck:https?://(w+.)+w+
Ergebnis:The Die URL lautet 【http://www.mikan.com】. Um eine sichere Verbindung herzustellen, verwenden Sie stattdessen
【https://www.mikan.com】.Analyse: Dieses Muster beginnt mit https?, was bedeutet, dass das Zeichen davor ? vorhanden sein kann oder nicht, sodass es mit http oder https übereinstimmen kann. Der folgende Teil ist derselbe wie im vorherigen Beispiel. 2. Anzahl der übereinstimmenden Wiederholungen
+, * und ? in regulären Ausdrücken lösen viele Probleme, aber:1) Es gibt keine Obergrenze für die Anzahl der Zeichen, die mit + und * übereinstimmen. Es gibt keine Möglichkeit, eine maximale Anzahl von Zeichen festzulegen, 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 diese Zahl zwischen { und } zwischen. 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. die Anzahl der wiederholten Übereinstimmungen. Legen Sie einen Mindest- und Höchstwert fest. Solche Intervalle müssen in der Form {n, m} angegeben werden, wobei n>=m>=0. Beispielsweise ein regulärer Ausdruck, der prüft, 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 die Übereinstimmung mindestens wiederholt werden
Die letzte Verwendung der {}-Syntax besteht darin, eine Mindestanzahl von Wiederholungen anzugeben (aber es Es ist nicht erforderlich, eine maximale Anzahl von Wiederholungen anzugeben), z. B. {3,} bedeutet, dass mindestens dreimal wiederholt wird. 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 $
+, *, ? kann als Anzahl der Wiederholungen ausgedrückt werden:
+ entspricht {1,}
* entspricht {0,}
? Entspricht {0,1}
3. Übereinstimmung verhindern
kann nur mit null oder einem Zeichen übereinstimmen, {n} und {n,m} haben auch eine Obergrenze für die Anzahl der übereinstimmenden Wiederholungen, aber es gibt keine Obergrenze für *, +, {n,}, was manchmal zu einer Überübereinstimmung führt.
Sehen wir uns ein Beispiel für die Zuordnung eines HTML-Tags an
Text:
Gestern ist history ,Morgen ist ein Rätsel, aber heute ist ein Geschenk.
Regulärer Ausdruck: <[Bb]> . *[Bb]>
Ergebnis:
Gestern ist 【Geschichte,morgen ist ein < ;B>geheimnis, aber heute ist ein geschenk].
Analyse: <[Bb]>entspricht dem entspricht dem Tag Das Ergebnis ist jedoch nicht wie erwartet: Vom ersten -Tag wird alles abgeglichen.
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 faule Version des gierigen Metazeichens:
* *?
+ >{n,} {n,}?
Im obigen Beispiel muss der reguläre Ausdruck also nur in <[Bb]> geändert werden.*?[Bb]> Das war's, das Ergebnis ist wie folgt: > gift
4. Zusammenfassung
Die wahre Stärke regulärer Ausdrücke spiegelt sich in der Anzahl der Wiederholungen wider Aspekte. Hier stellen wir die Verwendung mehrerer Metazeichen wie +, * 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 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: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 vonDetaillierte Erläuterung des regelmäßigen wiederholten Abgleichs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!