suchen
HeimBackend-EntwicklungPHP-TutorialLernen Sie die Grundlagen regulärer Ausdrücke

Lernen Sie die Grundlagen regulärer Ausdrücke

Mar 14, 2018 pm 12:52 PM
基础正则表达式

In diesem Artikel geht es um die Grundlagen von regulären Ausdrücken von JavaScript. Wenn Sie mit regulären Ausdrücken in JavaScript nicht vertraut sind, können Sie einfach vorbeikommen und sich mit den Grundlagen befassen von JavaScript – für diejenigen, die damit nicht vertraut sind, schauen wir uns das gemeinsam an!

Regulärer AusdruckLernen (kontinuierlich aktualisiert)

Heute habe ich das RegExp-Objekt gelernt, als ich Javascript Ich habe die Gelegenheit genutzt, reguläre Ausdrücke zu lernen. Ich war noch nie zuvor mit ihnen in Kontakt gekommen, also habe ich die Gelegenheit genutzt, sie zu lernen.

Referenz-Website:

30-minütiges Einführungs-Tutorial zu regulären AusdrückenKlicken Sie hier, um den Link zu öffnen

1. Was ist ein regulärer Ausdruck?

Reguläre Ausdrücke werden verwendet, um Regeln für den Abgleich von

Zeichenfolgen auszudrücken.

2. Verwandte Konzepte regulärer Ausdrücke

2.1

Metazeichen

Metazeichen werden in regulären Ausdrücken angegeben. Ein spezielles Symbol wird hinzugefügt reguläre Ausdrücke, um bestimmte Regeln zu ersetzen.

+ bedeutet eine beliebige Anzahl des Zeichens, das vor + erscheint, z. B. ein+, bedeutet, dass es eine beliebige Anzahl von Zeichen gibt davor a (einmal oder mehrmals wiederholen)
b 表示单词的开始或结束
. 表示除换行以外的任意字符
*    表示*前面出现的任意个数的该字符,例如a*,表示前面有任意个数的a(重复0次或多次)
+    表示+前面出现的任意个数的该字符,例如a+,表示前面有任意个数的a(重复1次或多次)
? 重复0或1次                                                                                                                                                                                                  
{n} 重复n次
{n, } 重复大于等于n次
{n, m} 重复n到m次
d   表示一个0-9的数字                                                                                                                    
^ 匹配字符串的开始                                                                           
& 匹配字符串的结束

3. Einfache reguläre Ausdrücke

Beginnen Sie direkt mit dem Beispiel:

Beispiel 1: Wenn ich das Wort Hallo abgleichen möchte, wird der reguläre Ausdruck geschrieben (Übereinstimmungsregel) lautet: hello

Dadurch werden alle Wörter abgeglichen, die hallo enthalten, z. B.: helloworld wird ebenfalls abgeglichen, aber wenn Sie nur hallo abgleichen möchten, dann brauchen Sie Um das Metazeichen b zu verwenden, um „Hallo“ vorher und nachher zu trennen und ein separates Wort „Hallo“ zu bilden, , dann sollte der reguläre Ausdruck lauten: bhellob

Beispiel 2: Wann Sie möchten Wenn auf das gesuchte „Hallo“ ein „Welt“-Zeichen folgt, sollten Sie die Metazeichen „bhellob.*worldb“ verwenden > Beispiel 3: Wenn Sie Telefonnummern wie 021-xxxxxxx zuordnen möchten, sollten Sie 021-ddddddd verwenden, wobei „021-

“ ein einfaches Zeichen ist, das keines darstellt besondere Bedeutung und Folgendes: Das verwendete d ist ein Metazeichen. Dieser reguläre Ausdruck kann als 021-d{7} abgekürzt werden, was bedeutet, dass d siebenmal wiederholt wird.

Beispiel 4: Ordnen Sie eine oder mehrere aufeinanderfolgende Zahlen zu, d+

Beispiel 5: Ordnen Sie Wörter zu, die mit a, baw*b beginnen

Beispiel 6: Übereinstimmung mit 5-12-stelliger QQ-Nummer, ^d{5, 12}&

4. Zeichen-Escape

Wenn die Zeichenfolge, die Sie suchen möchten, Metazeichen enthält, müssen Sie diese vor den Metazeichen hinzufügen, um die Metazeichen in normale Zeichen umzuwandeln.

5. Zeichenklasse

Das in diesem Teil gelöste Problem besteht darin, was zu tun ist, wenn die Zeichen, die Sie abgleichen möchten, keine entsprechenden Metazeichen haben, dann wir Sie müssen manuell eine Zeichenklasse erstellen.

Wenn es beispielsweise kein d gibt, das mit der Zahl 0-9 übereinstimmt, können wir, wenn wir eine beliebige Zahl von 0-9 finden möchten, eine [0-9]-Zeichenklasse erstellen, die genauso funktioniert t gleich. Zum Beispiel können reguläre Ausdrücke (?0d{2}[), -]?d{8} verwendet werden, um Telefonnummern abzugleichen. Bitte erklären Sie der Reihe nach:

(

steht für Escapezeichen (,

?

bedeutet, dass es 0 oder 1 Mal wiederholt wird,

d

bedeutet zwei Zahlen, [), -] bedeutet die Zeichenklasse von ) und -, ? bedeutet, dass es 0 oder 1 Mal wiederholt wird, gefolgt von 8 Zahlen. 6. Verzweigungsbedingungen Was oben geschrieben steht

(?0d{2}[), -]?d{8} ist wie Diese regulären Ausdrücke stimmen möglicherweise mit falschen Zeichenfolgen wie (01012345678 oder (010-12345678) überein. In solchen Fällen können Sie Verzweigungsbedingungen verwenden. Die Verzweigungsbedingungen ähneln dem logischen oder || in js und sind alle kurzgeschlossen

Operator , endet, wenn eine Bedingung von links nach rechts beurteilt werden kann

Für die obige Situation kann sie als (0d{2})d{8 geschrieben werden }. |0d{2}-d{8}|(0d{2})d{8}

7 Dieser Teil Um das Problem der Wiederholung nicht eines einzelnen Zeichens, sondern mehrerer Zeichen zu lösen, können wir bei der Wiederholung eines einzelnen Zeichens das Qualifikationsmerkmal in Zeichen + Metazeichen verwenden. Wenn jedoch mehrere sich wiederholende Zeichen vorhanden sind, können wir diese zusätzlich hinzufügen sich wiederholende Zeichen. (). Zum Beispiel kann der folgende reguläre Ausdruck verwendet werden, um die IP-Adresse darzustellen: )

8. Antonym

Wenn Sie Zeichen finden müssen, die nicht einfach definiert werden können, z. B. andere Zeichen als xxx, müssen Sie das Antonym verwenden

tbody>
W
W

匹配任意不是字母、数字、下划线、汉字的字符

D 匹配任意不是数字的字符
B 匹配任意不是单词开头或结束位置的字符
S 匹配任意不是空白的字符
[^x] 匹配除了x以外的字符
[^aeiou] 匹配除了aeiou之外的字符
übereinstimmt mit jedem Zeichen, das handelt es sich nicht um Buchstaben, Zahlen, Unterstriche oder chinesische Zeichen

D Entspricht jedem Zeichen, das keine Zahl ist
B Entspricht jedem Zeichen, das nicht der Anfang oder das Ende eines Wortes ist
S Entspricht jedem Zeichen, das kein Leerzeichen ist
[^x] Entspricht allem außer x Zeichen außer aeiou
[^aeiou] Entspricht anderen Zeichen als aeiou
Zum Beispiel wird der reguläre Ausdruck ^S+& verwendet, um eine Zeichenfolge ohne Leerzeichen abzugleichen string

9.Rückverweis

Der Inhalt dieses Teils stimmt mit der vorherigen Gruppierung überein, wenn wir () verwenden. Um Zeichen zu gruppieren, können wir uns später weiterhin auf diese Gruppierung durch Nummerierung beziehen. Bei der Gruppierung nach () beginnt die Gruppierung bei 1 in der Reihenfolge des Auftretens von (. Beispielsweise kann der reguläre Ausdruck b(w+)s+1b verwendet werden Um wiederholte Vorkommen abzugleichen, beziehen sich Wörter wie „go go“ usw. hier auf die zuvor vorkommende Gruppierung bis 1.

Weitere beteiligte Rückreferenzsyntaxen sind:

(exp) 匹配exp,并捕获当前内容到自动的分组里                                                                            
(?exp) 匹配exp,并捕获当前内容并分配组名为name
(?:exp) 匹配exp,不为捕获的内容分配组名
.

10. Die Behauptung mit der Breite Null

wird verwendet, um den Teil vor oder nach einem bestimmten Teil des Inhalts zu finden, schließt den Inhalt jedoch nicht ein.

Regulärer Ausdruck (?=exp) bedeutet zu behaupten, dass der später erscheinende Teil mit dem Ausdruck exp übereinstimmen kann. Beispielsweise entspricht bw+(?=ingb) dem vorderen Teil von Wörtern, die mit ing enden. Wenn Sie beispielsweise nach „Ich tanze und singe“ suchen, werden Tanz und Gesang abgeglichen (da w+ vorhanden ist, wird es nicht als s abgeglichen).

Regulärer Ausdruck (?bre)w+b mit der zweiten Hälfte des Wortes übereinstimmen, das mit re beginnt. Bei der Suche nach „Lesen“ wird beispielsweise „ading“ gefunden .

Wenn Sie an alle drei Ziffern einer sehr langen Zahl ein Komma hinzufügen möchten, z. B. an 123456789, können Sie den regulären Ausdruck ((?

Das folgende Beispiel verwendet zwei Behauptungen gleichzeitig Gleichzeitig wird (?=

Im Allgemeinen besteht der Zweck der Nullbreitenbehauptung darin, den Start- oder Endpunkt übereinstimmender Zeichen gemäß bestimmten Regeln zu bestimmen.

11. Negative Nullbreitenbehauptung

Wie bereits erwähnt, verwenden Sie Antonyme, um Zeichen zu finden, die kein bestimmtes Zeichen sind oder sind nicht in einem bestimmten Zeichen.

Wenn Sie beispielsweise ein Wort finden möchten, bei dem der Buchstabe q vorkommt, aber nicht von u gefolgt wird. Sie könnten bq[^u]w*b schreiben. Bei einem solchen Ausdruck tritt jedoch ein Fehler auf, wenn q am Ende eines Wortes erscheint, da [^u] mit dem Trennzeichen des Wortes übereinstimmt, das dann mit dem nächsten Wort übereinstimmt, das mit Zeichen wie „Kämpfen im Irak“ übereinstimmt . Zeichenfolge.

Um das Antonymbelegungsproblem zu lösen, können wir eine negative Nullbreitenbehauptung verwenden, da sie nur mit einer Position übereinstimmt und keine Zeichen verbraucht. Der obige Ausdruck kann als bq(?!u)w*b geschrieben werden.

Ebenso verwenden wir (?

Ein komplexeres Beispiel: (?).*(?=1>)

Wenn Sie das vorherige (? stellt das HTML-Tag dar. Wenn das vorherige ist, bedeutet die folgende Behauptung mit der Breite Null Dieser reguläre Ausdruck dient also dazu, die Teile zwischen den HTML-Tags abzugleichen.

12. Kommentare

Kommentare durch die Syntax enthalten (?#comment), Beispiel: 2[0-4]d(?#200-249).

13. Gier und Faulheit

Bei Problemen mit der Zeichenfolgenübereinstimmung besteht das übliche Verhalten darin, so viele Zeichen wie möglich abzugleichen. Am Beispiel des Ausdrucks a.*b und der Zeichenfolge aabab wird aabab statt ab abgeglichen. Diese Matching-Regel wird als Greedy-Matching bezeichnet.

Manchmal müssen wir Lazy Matching mit so wenigen Zeichen wie möglich abgleichen. Müssen wir es in diesem Fall nach dem oben genannten Qualifikationsmerkmal hinzufügen? B. a.*?b konvertiert den gierigen Vergleich in einen verzögerten Vergleich. Zu diesem Zeitpunkt werden aab (Zeichen 1–3) und ab (Zeichen 4–5) abgeglichen (der spezifische Grund liegt in den Übereinstimmungsregeln regulärer Ausdrücke). .

14. Verarbeitungsoptionen

Ähnlich wie bei der Flagge in js gibt es Groß-/Kleinschreibung, Mehrzeilenmodus, globalen Modus usw.

15. Ausgeglichenes Gruppen-/rekursives Matching

In diesem Teil geht es um das Matching-Problem, wenn Sie beispielsweise den mathematischen Ausdruck ( 5*3))) (5*3) kann nicht einfach als (.*) geschrieben werden, da dies mit dem gesamten Ausdruck übereinstimmt. Dann ist die Matching-Strategie, die wir anwenden sollten, dem von uns gelernten Klammer-Matching-Problem ähnlich. Verwenden Sie den Stapel, um ihn zu lösen. Wenn der letzte Stapel leer ist, bedeutet dies, dass er auf den Stapel stößt Klammern im Ausdruck stimmen vollständig überein. Wenn sie nicht leer sind, führt die Regex-Engine einen Backtrack aus, um sicherzustellen, dass die Klammern übereinstimmen.

Verwandte Empfehlungen:

Wie man reguläre Ausdrücke in JS verwendet


Das obige ist der detaillierte Inhalt vonLernen Sie die Grundlagen regulärer Ausdrücke. 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
PHP und Python: Verschiedene Paradigmen erklärtPHP und Python: Verschiedene Paradigmen erklärtApr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP und Python: Ein tiefes Eintauchen in ihre GeschichtePHP und Python: Ein tiefes Eintauchen in ihre GeschichteApr 18, 2025 am 12:25 AM

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

Wählen Sie zwischen PHP und Python: Ein LeitfadenWählen Sie zwischen PHP und Python: Ein LeitfadenApr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP und Frameworks: Modernisierung der SprachePHP und Frameworks: Modernisierung der SpracheApr 18, 2025 am 12:14 AM

PHP bleibt im Modernisierungsprozess wichtig, da es eine große Anzahl von Websites und Anwendungen unterstützt und sich den Entwicklungsbedürfnissen durch Frameworks anpasst. 1.PHP7 verbessert die Leistung und führt neue Funktionen ein. 2. Moderne Frameworks wie Laravel, Symfony und Codesigniter vereinfachen die Entwicklung und verbessern die Codequalität. 3.. Leistungsoptimierung und Best Practices verbessern die Anwendungseffizienz weiter.

Auswirkungen von PHP: Webentwicklung und darüber hinausAuswirkungen von PHP: Webentwicklung und darüber hinausApr 18, 2025 am 12:10 AM

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Apr 17, 2025 am 12:25 AM

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Apr 17, 2025 am 12:24 AM

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP vs. Python: Anwendungsfälle und AnwendungenPHP vs. Python: Anwendungsfälle und AnwendungenApr 17, 2025 am 12:23 AM

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.