Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte grundlegende Beispielanalyse regulärer Ausdrücke

Detaillierte grundlegende Beispielanalyse regulärer Ausdrücke

王林
王林nach vorne
2019-08-29 11:57:422249Durchsuche

Reguläre Ausdrücke kommen in unserer Überprüfung häufig vor! Lassen Sie mich Ihnen zeigen, wie Sie reguläre Ausdrücke einfacher verstehen können.
Lassen Sie uns zunächst über die Benennung normaler Namen sprechen:

Ich denke, dieses Wort wird jedem bekannt sein! „Regulärer Ausdruck“. Das „Regular“ des regulären Ausdrucks wird im Allgemeinen mit „regulär“, „regulär“ und „konventionell“ übersetzt. „Regulär“ bedeutet hier „Regeln“ und „Gesetze“, und „Regulärer Ausdruck“ bedeutet „ein Ausdruck, der eine bestimmte Regel beschreibt“, was wir reguläre Ausdrücke nennen. Tatsächlich werden reguläre Ausdrücke verwendet, um bestimmte Verhaltensweisen zu regulieren! Mit anderen Worten: Es handelt sich um eine Einschränkung, genauso wie wir uns an die Verkehrsregeln halten müssen.
Ich persönlich finde, dass es nicht schwer ist, reguläre Regeln zu verstehen! Fügen Sie einfach einige der Dinge hinzu, an die Sie sich erinnern müssen, und nutzen Sie sie flexibel, und fertig!
Okay! Als nächstes werde ich mich mit dem Hauptteil der Regelmäßigkeit befassen.
Werfen wir zunächst einen Blick auf die wichtigsten Dinge der Regelmäßigkeit. Im Allgemeinen wird es im Projekt kein Problem geben!

Das erste „“
wird allgemein als Escape-Zeichen bezeichnet, das ein Zeichen als Sonderzeichen oder Literalzeichen kennzeichnet. Beispiel: „n“ entspricht „n“. Wenn es „n“ ist, handelt es sich um ein Zeilenumbruchzeichen.
Jemand sollte fragen: Was ist, wenn ich nur den Schrägstrich „“ schreiben möchte? Auch das ist ganz einfach! Schreiben Sie einfach „\“ so! Warum zwei „\“ schreiben? Nur zur Unterscheidung.

Das zweite „^“
Dies wird allgemein als Startzeichen bezeichnet, was bedeutet, dass Sie bereit sind, reguläre Ausdrücke zu schreiben! Wenn die Multiline-Eigenschaft des RegExp-Objekts festgelegt ist, stimmt ^ auch mit der Position nach „n“ oder „r“ überein.

Das dritte „$“
Dies wird allgemein als Endzeichen bezeichnet, das auch als Ende bezeichnet werden kann (eine sehr unprofessionelle Erklärung)! Wenn die Multiline-Eigenschaft des RegExp-Objekts festgelegt ist, entspricht $ auch der Position vor „n“ oder „r“

Das vierte „*“
Dies soll mit dem vorherigen übereinstimmen Unterausdruck Die Formel hat null oder mehrere Male. Beispiel: zo* kann mit „z“ und „zo“ oder „zoo“ übereinstimmen. Dieses „*“ entspricht {0,}

Das fünfte „+“
stimmt ein oder mehrere Male mit dem vorherigen Unterausdruck überein. Beispiel: „zo+“ kann mit „zo“ und „zoo“ oder „zooo“ übereinstimmen. Das „*“ und das „+“ sind fast nullmal und eins ist einmal. Dieses „+“ entspricht {1,}.

Das sechste „?“
Dies entspricht dem vorherigen Unterausdruck null oder einmal. Beispiel: „do(es)?“ kann mit „do“ oder „does“ übereinstimmen. Dieses Fragezeichen bedeutet entweder keine Übereinstimmung oder nur eine Übereinstimmung!

Das siebte „{}“
Wie oft stimmt dieses Symbol überein,
1,{n} stimmt mit einer bestimmten Anzahl überein, n ist nicht negativ Ganzzahl, wie zum Beispiel: „o{2}“ bedeutet, dass zwei „oo“ übereinstimmen, wie zum Beispiel: gut, Essen usw.! Aber es kann nicht mit dem Körper übereinstimmen, da es nur ein o gibt!
2,{n,} stimmt mindestens n-mal überein, n ist eine nicht negative ganze Zahl, wie zum Beispiel: „o{2,}“ Dies bedeutet, dass mehr als zwei „oo“ übereinstimmen, wie zum Beispiel: gut, gut, gut usw. . „o{1,}“ ist äquivalent zu „o+“. „o{0,}“ ist äquivalent zu „o*“.
3,{n,m} Dies ist eine minimale Übereinstimmung von n-mal und ein Maximum von m-Übereinstimmungen. n und m sind beide nicht negative ganze Zahlen, wobei n<=m. Beispiel: „o{1,3}“ entspricht „body“, „food, food“. Passt allerdings nicht zu fooood. „o{0,1}“ ist äquivalent zu „o?“. Bitte beachten Sie beim Schreiben, dass zwischen dem Komma und den beiden Zahlen kein Leerzeichen stehen darf.

Die achte „?“-Sonderverwendung
Wenn diesem Zeichen ein anderer Begrenzer folgt (*, +,?, {n}, {n ,}, {n,m}), das passende Muster ist nicht gierig. Der sogenannte Non-Greed-Modus bedeutet, dass das Wenigste besser ist. Der Non-Greed-Modus entspricht möglichst wenigen der gesuchten Zeichenfolgen, während der Standard-Greed-Modus so viele der gesuchten Zeichenfolgen wie möglich abdeckt. Beispielsweise entspricht für die Zeichenfolge „oooo“ „o+?“ einem einzelnen „o“, während „o+“ allen „o“ entspricht.

Das neunte „.“
entspricht jedem einzelnen Zeichen außer dem Zeilenumbruchzeichen „n“. Wenn Sie ein beliebiges Zeichen innerhalb des Zeilenumbruchzeichens „n“ finden möchten, verwenden Sie das Muster „(.|n)“.

Das zehnte „Muster“
Dieses „Muster“ ist nicht leicht zu verstehen und ich war auf den ersten Blick verwirrt! Mein Verständnis davon ist jedoch wie folgt, ich hoffe, es wird für alle nützlich sein:
1 ?:pattern stimmt mit dem Muster überein, erhält aber nicht das passende Ergebnis, zum Beispiel: k(?:1|2|3) k stimmt mit einem von 123 überein, Beispiel: k1|k2
2. ?=Muster Positive positive Vorschau Zum Beispiel: K(?=1|2|3) Wählen Sie K, wenn K mit einem von 123 übereinstimmt. Beispiel: k in k1 oder k in k2
3. ?!Muster vorwärts negative Vorprüfung Zum Beispiel: k(?!1|2|3) Wählen Sie K, wenn K mit keinem von 123 übereinstimmt. Beispiel: stimmt nicht mit k in überein k1, es kann aber auch k4, k5
4 sein. k in 1k oder k in 2k K
5. ?

Das elfte „|“
Dieses Symbol bedeutet oder zum Beispiel: „f|good“ kann mit „f“ oder „good“ übereinstimmen, was ist, wenn dies der Fall ist“(f| g)ood“ entspricht „food“ oder „good“.

Das zwölfte „[]“
Dieses Symbol bedeutet die Summe der Zeichensätze. Es sieht ähnlich aus wie „{}“, hat aber eine ganz andere Bedeutung.

Das dreizehnte „()“
Dieses symbolische Array oder dieser symbolische Satz

1, [xyz] entspricht jedem enthaltenen Zeichen. Das heißt, wählen Sie eine der drei. Beispiel: „[abc]“ kann mit dem „a“ in „company“ übereinstimmen, aber nicht mit „beautiful“, da darin zwei Buchstaben verwendet werden.
2. [^xyz] Dies ist eine Reihe negativer Zeichen, die auch als „nicht“ bezeichnet werden können. Beispiel: „[^abc]“ kann mit „drop“ usw. übereinstimmen! Solange das Wort keine „abc“-Buchstaben enthält, ist es in Ordnung.
3. [a-z] Zeichenbereich. Entspricht jedem Zeichen innerhalb des angegebenen Bereichs. „[a-z]“ entspricht beispielsweise jedem Kleinbuchstaben im Bereich „a“ bis „z“. Es kann auch als „[0-9]“ geschrieben werden, was den Zahlen von 0 bis 9 direkt entspricht.
4. [^a-z] Ich denke, es versteht sich von selbst, dass jeder wissen sollte, was es bedeutet, richtig. Es bedeutet zunächst einmal, was Sie denken: jedes Zeichen, das nicht im Bereich von „a“ bis „z“ liegt I Als ich das sah, dachte ich, es wäre ein Buchstabe, der nicht zwischen a und z steht! Ich sagte, wenn zwischen a und z kein Buchstabe steht, dann gibt es auf Chinesisch nur „ü“! Das scheint „Yu“ zu lauten! hehe! Jeder kann es deutlich sehen! Es ist ein Zeichen, kein Buchstabe.

Werfen wir einen Blick auf die besonderen Bedeutungen von „“ und Buchstaben.
„b“ entspricht der Grenze eines Wortes, also der Position zwischen dem Wort und dem Leerzeichen. Beispielsweise kann „erb“ mit „er“ in „never“ übereinstimmen, aber nicht mit „er“ in „verb“. Ich denke, das ist leichter zu merken. Man kann es sich so merken: Der Rand der Grenze beginnt mit b!
„B“ ist das Gegenteil von „b“ und entspricht Nicht-Wortgrenzen. „erB“ kann mit dem „er“ in „verb“ übereinstimmen, aber nicht mit dem „er“ in „never“.
„d“ wird häufiger verwendet! Ich empfehle Ihnen, dies im Hinterkopf zu behalten. Dies entspricht numerischen Zeichen, die [0-9] entsprechen.
„D“ ist auch leicht zu verstehen. Es bedeutet auch die umgekehrte Bedeutung, dass es keine Zahl ist, äquivalent zu [^0-9].
„f“ entspricht einem Formularvorschubzeichen. Dazu muss man nicht viel erklären! Die folgenden vier sind zu viele, um zu viel zu erklären. Denken Sie einfach daran! Verwenden Sie es einfach in Ihrem Projekt!
„n“ entspricht einem Zeilenumbruchzeichen.
„r“ entspricht einem Wagenrücklaufzeichen.
„t“ entspricht einem Tabulatorzeichen.
„v“ entspricht einem vertikalen Tabulatorzeichen.
„s“ entspricht jedem Nullzeichen, entspricht jedem Leerzeichen, einschließlich Leerzeichen, Tabulatoren, Formularfeeds usw. Entspricht [fnrtv]. Das heißt, dieses enthält alle fünf oben genannten!
„S“ ist ein Nicht-Leerzeichen, äquivalent zu [^ fnrtv].
An diesem Punkt könnte jeder das Gefühl haben, dass die regulären Regeln tatsächlich diese Charaktere sind! Und einige davon lassen sich durch unser logisches Denken ableiten, andere wiederholen sich, solange jeder sie flexibel nutzen kann.

„w“ entspricht jedem Wortzeichen, einschließlich eines Unterstrichs. Entspricht „[A-Za-z0-9_]“. Dies wird in der Praxis häufig verwendet und ich empfehle Ihnen, dies im Hinterkopf zu behalten.

„W“ entspricht numerischen Nicht-Wort-Zeichen. Entspricht „[^A-Za-z0-9_]“.

Okay! Im Grunde ist das alles, was Sie sich merken müssen! Einige Regex-Meister sagen möglicherweise: „Sie sind überhaupt nicht vollständig?“ Was ich geschrieben habe, sind nur einige grundlegende, die in Projekten üblich sind und praktischer sind . Benutzen Sie es frei.
Lassen Sie uns als Nächstes einige wesentliche Dinge mit Ihnen erledigen und einige reguläre Ausdrücke mit Ihnen analysieren.
Zum Beispiel diese reguläre Regel: ^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5 ][0 -9])$
Ich denke, normale Regex-Experten werden auf einen Blick wissen, was es ist. Natürlich wissen einige Leute mit starkem logischen Denken schon auf den ersten Blick, was das ist. Ja, es ist das Gesetz der Zeit.

OK Lassen Sie uns diesen regulären Ausdruck analysieren. Ausgehend davon ist „^“, „([0-1]?[0-9]|2[0-3])“ eine Gruppe, „[0-. 1 ]?" Die Funktion dieses Fragezeichens besteht darin, dass es höchstens null oder eine 0 oder 1 geben kann, „[0-9]“ ist eine beliebige Zahl zwischen 0 und 9, „|“ bedeutet „oder“, was bedeutet ist nicht „[ 0-1]?[0-9]“ ist „2[0-3]“, „2[0-3]“ ist die erste 2, was 2 bedeutet, und die letzten 0 bis 3 sind beliebig eine zwischen 0 und 3. Zahl, „:“ bedeutet „:“, „([0-5][0-9])“ ist ebenfalls eine Gruppe, „[0-5]“ ist eine beliebige Zahl zwischen 0 und 5, „[0-9]“ ist eine beliebige Zahl zwischen 0 und 9, „:“ ist auch die ursprüngliche Bedeutung, „([0-5][0-9])“ ist ebenfalls eine Gruppe, „[0-5]“ liegt zwischen 0 und 5. Eine beliebige Zahl, „[0-9]“ ist eine beliebige Zahl zwischen 0 und 9 und „$“ ist das Abschlusszeichen.
Lassen Sie mich mit Ihnen eine Dezimalzahl analysieren

Zum Beispiel: ^[1-9]+d*(.[0-9]{1,2})?|0(.[0-9]{1,2})?$
“ ^ " ist das Startsymbol, „[1-9]+“, wobei „+“ mindestens eine oder mehrere Zahlen zwischen 1 und 9 bedeutet, „d*“, dieses „d“ eine Zahl ist und dieses „*“ at bedeutet Mindestens eine Nullzahl oder mehrere Zahlen, „(.[0-9]{1,2})?“ In dieser Gruppe ist „.“ der ursprüngliche Punkt, „[0-9]{1,2}“ 0 bis 9 Dazwischen stehen eine oder zwei Zahlen und das Fragezeichen „?“ dahinter bedeutet, dass null oder eine Zahl „(.[0-9]{1,2})“ steht. „|“ ist entweder „[1-9]+d*(.[0-9]{1,2})?“ oder „0(.[0-9]{1,2})?“ „0(.[0-9]{1,2})?“ Die 0 in dieser Gruppe ist die ursprüngliche Bedeutung und das „.“ in dieser Gruppe von „(.[0-9]{1,2})“ ?" ist die ursprüngliche Bedeutung. „[0-9]{1,2}“ Es gibt eine oder zwei Zahlen zwischen 0 und 9. Das Fragezeichen „?“ dahinter bedeutet, dass es null oder eine Zahl gibt „(.[0 -9]{1, 2})".

Nachfolgend gebe ich Ihnen einige Beispiele für gängige reguläre Ausdrücke:

^[1-9]d*$ //Übereinstimmung mit positiven ganzen Zahlen
^-[1 -9]d* $ //Übereinstimmung mit negativen Ganzzahlen
^-?[1-9]d*$ //Übereinstimmung mit Ganzzahlen
^[1-9]d*|0$ //Übereinstimmung mit nicht negativen Ganzzahlen ( Positive Ganzzahl + 0 )  
^-[1-9]d*|0$ //Übereinstimmung mit nicht positiver Ganzzahl (negative Ganzzahl + 0)  
^[1-9]d*.d*|0.d *[1 -9]d*$ //Positive Gleitkommazahlen abgleichen
^-([1-9]d*.d*|0.d*[1-9]d*)$ //Negative Gleitkommazahlen abgleichen Punkte
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ /Gleitkommazahl abgleichen
^ [ 1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ // Übereinstimmung mit nicht negativen Gleitkommazahlen (positive Gleitkommazahlen + 0)  
^(- ([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //Übereinstimmung mit nicht positiven Gleitkommazahlen (negative Gleitkommazahlen). Punktzahlen + 0)
^[a-zA-Z][a-zA-Z0-9_]{4,15}$ //Ist das passende Konto legal (beginnend mit einem Buchstaben, 5-16 Bytes erlaubt, alphanumerische Unterstriche erlaubt)
^ s*|s*$ //Regulärer Ausdruck, der führende und nachfolgende Leerzeichen übereinstimmt
ns*r //Regulärer Ausdruck, der Leerzeilen übereinstimmt
[^x00-xff] //Übereinstimmendes Double -Byte-Zeichen (einschließlich chinesischer Zeichen)
[u4e00-u9fa5] //Regulärer Ausdruck, der mit chinesischen Zeichen übereinstimmt

Benutzername
^[a-z0-9_-]{3,16}$

Passwort
^[a-z0-9_-]{6,18}$

Hex-Wert
^#?([a-f0-9]{6}| [a-f0-9]{3})$

E-Mail
^([a-z0-9_.-]+)@([da-z.-]+).([ a-z .]{2,6})$
^[a-zd]+(.[a-zd]+)*@([da-z](-[da-z])?)+(. { 1,2}[a-z]+)+$

URL
^(https?://)?([da-z.-]+).([a-z.]{2, 6 })([/w .-]*)*/?$

IP-Adresse
((2[0-4]d|25[0-5]|[01]?dd? ) .){3}(2[0-4]d|25[0-5]|[01]?dd?)

oder
^(?:(?:25[0- 5 ]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0- 4 ][0-9]|[01]?[0-9][0-9]?)$

HTML-Tag
^<([a-z]+)([^< ] +)*(?:>(.*)|s+/>)$

Das Obige ist eine Erklärung einiger grundlegender Kenntnisse über reguläre Ausdrücke anhand praktischer Beispiele hilfreich sein Es wird Schülern helfen, die hinsichtlich regulärer Ausdrücke verwirrt sind. Bitte weisen Sie auf etwaige Fehler hin.

Für weitere verwandte Fragen besuchen Sie bitte die chinesische PHP-Website: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte grundlegende Beispielanalyse regulärer Ausdrücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen