Entmystifizierende Regex mit praktischen Beispielen
Key Takeaways
- reguläre Ausdrücke (REGEX) sind ein wertvolles Instrument für Entwickler, das für Aufgaben wie Protokollanalyse, Validierung der Formulare und Ersetzen von Operationen verwendet und ersetzt wird. Das Verständnis des effektiven Aufbaus und der Verwendung von Regex kann die Produktivität und Effizienz erheblich verbessern.
- Ein guter Regex beinhaltet die Definition eines Szenarios, die Entwicklung eines Plans und die Implementierung/Testen/Refactoring. Es ist wichtig zu verstehen, welche Arten von Charakteren erlaubt sind, wie oft ein Charakter erscheinen muss und alle Einschränkungen folgen.
- Praktische Beispiele für die Regex -Verwendung umfassen das Abpassen eines Kennworts, eine URL, ein bestimmtes HTML -Tag und duplizierte Wörter. Diese Beispiele zeigen die Verwendung von Zeichenbereichen, Behauptungen, Bedingungen, Gruppen und mehr.
- Während Regex ein leistungsstarkes Werkzeug ist, kann es auch komplex und schwer zu verwalten sein. Daher ist es manchmal effektiver, mehrere kleinere Regex anstelle eines großen zu verwenden. Die Beachtung von Gruppenaufnahmen kann auch die Übereinstimmungen für die weitere Verarbeitung nützlicher machen.
- Abgleichen eines Passworts
- passen eine URL ab
- Abgleichen eines bestimmten HTML -Tags
- Matching duplizierte Wörter
wie man einen guten Regex baut
Regelmäßige Ausdrücke werden häufig in der täglichen Routine des Entwicklers verwendet - Protokollanalyse, Validierung der Formulare, Finden und Ersetzen usw. Deshalb sollte jeder gute Entwickler wissen, wie man sie benutzt, aber was ist die beste Praxis, um eine gute Regex aufzubauen?1. Definieren Sie ein Szenario
Wenn Sie die natürliche Sprache verwenden, um das Problem zu definieren, erhalten Sie eine bessere Vorstellung von dem Gebrauchsansatz. Die Wörter könnten und müssen, die in einer Definition verwendet werden, nützlich, um obligatorische Einschränkungen oder Behauptungen zu beschreiben. Unten ist ein Beispiel:- Die Zeichenfolge muss mit "H" beginnen und mit "o" (z. B. Hallo, Halo).
- Die Zeichenfolge könnte in Klammern verpackt werden.
2. Entwickeln Sie einen Plan
Nach einer guten Definition des Problems können wir die Art von Elementen verstehen, die an unserem regulären Ausdruck beteiligt sind:- Welche Arten von Zeichen erlaubt (Wort, Ziffer, neue Zeile, Bereich,…)?
- Wie oft muss ein Charakter erscheinen (ein oder mehrere einmal,…)?
- Gibt es einige Einschränkungen, die folgen müssen (Optionen, Lookahead/Hinten, if-then-else,…)?
3. Implement/testen/refactor
Es ist sehr wichtig, eine Echtzeit-Testumgebung zu haben, um Ihren regulären Ausdruck zu testen und zu verbessern. Es gibt Websites wie regex101.com, regexr.com und debuggex.com, die einige der besten Umgebungen bieten. Um die Effizienz des Regex zu verbessern, können Sie versuchen, einige dieser zusätzlichen Fragen zu beantworten:- Sind die Zeichenklassen für die spezifische Domäne korrekt definiert?
- Soll ich mehr Testketten schreiben, um mehr Anwendungsfälle abzudecken?
- Ist es möglich, einige Probleme zu finden und zu isolieren und separat zu testen?
- Sollte ich meinen Ausdruck mit Subpattern, Gruppen, Bedingungen usw. neu aufstellen, um ihn kleiner, klarer und flexibler zu machen?
Praktische Beispiele
Das Ziel der folgenden Beispiele ist es nicht, einen Ausdruck zu schreiben, der das Problem nur löst, sondern den effektivsten Ausdruck für die spezifischen Anwendungsfälle unter Verwendung wichtiger Elemente wie Charakterbereichen, Behauptungen, Bedingungen, Gruppen usw.Abgleichen eines Passworts

- 6 bis 12 Zeichen lang
- muss mindestens einen Großbuchstaben haben
- muss mindestens einen unteren Fallbrief haben
- muss mindestens eine Ziffer haben
- sollte andere Zeichen enthalten
- ^ behauptet die Position zu Beginn der Zeichenfolge
- (?
- .* Übereinstimmt jedem Zeichen (außer Newline) zwischen Null und unbegrenzten Zeiten
- [a-z] entspricht einem einzelnen Zeichen im Bereich zwischen A und Z (Fallempfindlichkeit)
- (?
- .* Übereinstimmt jedem Zeichen (außer Newline) zwischen Null und unbegrenzten Zeiten
- [a-z] entspricht einem einzelnen Zeichen zwischen A und Z (Fallempfindlichkeit)
- (?
- .* Übereinstimmt jedem Zeichen (außer Newline) zwischen Null und unbegrenzten Zeiten
- D entspricht einer Ziffer [0-9]
- . {6,12}entspricht jedem Charakter (außer Newline) zwischen 6 und 12 -mal
- $ behauptet die Position am Ende der Zeichenfolge
passende URL

- muss mit http oder https oder ftp beginnen, gefolgt von: //
- muss mit einem gültigen Domänennamen übereinstimmen
- könnte eine Portspezifikation (http://www.sitepoint.com:80) enthalten
- könnte Ziffer, Buchstaben, Punkte, Bindestriche, Vorwärts -Schrägstriche, mehrmals enthalten
- ^ behauptet die Position zu Beginn der Zeichenfolge
- Erfassungsgruppe (http | https | ftp), erfasst http oder https oder ftp
- : entkommenem Charakter, entspricht dem Charakter: buchstäblich
- [ /] {2} stimmt genau das 2 -fache mit dem entkommenen Zeichen / überein
- Erfassungsgruppe ([a-za-z0-9-.]. [A-za-z] {2,4}):
- [a-za-z0-9- buchstäblich
- . entspricht dem Charakter. buchstäblich
- [a-za-z] {2,4}entspricht einem einzelnen Zeichen zwischen 2 und 4 -mal zwischen A und Z oder A und Z (Fallempfindlichkeit)
- Gruppe erfassen (: [0-9]) ?:
- Quantifizierer? entspricht der Gruppe zwischen Null oder mehrmals
- : Passt zum Charakter: buchstäblich
- [0-9] entspricht einem einzelnen Zeichen zwischen 0 und 9 ein oder mehrmals
- /? entspricht dem Charakter / buchstäblich Null oder einmal
- Gruppe erfassen ([a-za-z0-9 -._?, '/\ & Amp;%$#= ~]*):
- [a-za-z0-9 -._? : -._?, '/ & amp;%$#= ~.
Übereinstimmung mit HTML -Tag

- Das Start -Tag muss mit
- Das End -Tag muss mit gefolgt von einem oder mehreren Zeichen beginnen und mit> enden
- Wir müssen den Inhalt in einem Tag -Element übereinstimmen
-
- / entspricht dem Charakter / buchstäblich
- 1 entspricht dem gleichen Text, der von der ersten Erfassungsgruppe übereinstimmt: ([w])

- Szenario:
- Die Wörter sind Raum getrennt Wir müssen jede Duplikation übereinstimmen-nicht aufeinanderfolgende
- Übereinstimmung mit jedem Wortcharakter, gefolgt von einem Nicht-Wort-Charakter (in unserem Fallraum)
- Überprüfen Sie, ob das übereinstimmende Wort bereits vorhanden ist oder nicht
- b Wortgrenze
- Gruppe erfassen ([w]) entspricht jedem Wortzeichen a-za-z0-9_
- b Wortgrenze
- (?
- .* Übereinstimmt jedem Zeichen (außer Newline)
- 1 entspricht demselben Text wie der erste Erfassungsgruppe
endgültige Gedanken
Regelmäßige Ausdrücke sind zweischneidige Schwerter. Je mehr Komplexität hinzugefügt wird, desto schwieriger ist es, das Problem zu lösen. Aus diesem Grund ist es manchmal schwierig, einen regulären Ausdruck zu finden, der allen Fällen übereinstimmt, und es ist besser, stattdessen mehrere kleinere Regex zu verwenden. Ein gutes Szenario des Problems könnte sehr hilfreich sein und es Ihnen ermöglicht, über den Charakterbereich, die Einschränkungen, Behauptungen, Wiederholungen, optionale Werte usw. nachzudenken. Wenn Sie den Gruppenaufnahmen mehr Aufmerksamkeit schenken, nützt die Übereinstimmungen für die weitere Verarbeitung nützlich. Fühlen Sie sich frei, die Ausdrücke in den Beispielen zu verbessern und teilen Sie uns mit, wie Sie es tun!Nützliche Ressourcen
Im Folgenden finden Sie weitere Informationen und Ressourcen, um Ihre Regex -Fähigkeiten zu wachsen. Fühlen Sie sich frei, dem Artikel einen Kommentar hinzuzufügen, wenn Sie etwas Nützliches finden, das nicht aufgeführt ist.Lea Verou - /reg (exp) {2}LAUPE/: Entmystifizierende reguläre Ausdrücke
https://www.youtube.com/watch?v=eklues9rvakPHP -Bibliotheken
Websites
Bücher
häufig gestellte Fragen (FAQs) zu regulären Ausdrücken (REGEX)
Was sind einige praktische Anwendungen von regulären Ausdrücken (REGEX)? Sie werden häufig in der Datenvalidierung verwendet, um sicherzustellen, dass die Eingabe der Benutzer mit einem bestimmten Format übereinstimmt, z. B. eine E -Mail -Adresse oder Telefonnummer. Sie können auch im Web -Scraping verwendet werden, um bestimmte Informationen aus einer Webseite zu extrahieren. Darüber hinaus kann Regex in der Textverarbeitung für Aufgaben wie das Finden und Austausch bestimmter Textzeichenfolgen, die Aufteilung einer Zeichenfolge in ein Array von Substrings und mehr verwendet werden.
Das Erstellen komplexer regulärer Ausdrücke beinhaltet das Verständnis und die Kombination verschiedener Regex -Komponenten. Dazu gehören Literale, Charakterklassen, Quantifizierer und Metacharaccters. Indem Sie diese Komponenten auf unterschiedliche Weise kombinieren, können Sie regelmäßige Ausdrücke erstellen, die zu einer Vielzahl von Mustern passen. Sie können beispielsweise einen regulären Ausdruck erstellen, der E -Mail -Adressen, Telefonnummern oder URLs entspricht.
Was sind einige häufige Fehler, die bei der Verwendung regelmäßiger Ausdrücke (Regex) zu vermeiden sind. *), was zu unerwarteten Ergebnissen führen kann. Ein weiterer häufiger Fehler ist nicht ordnungsgemäß den Sonderfiguren, wenn sie wörtlich interpretiert werden sollen. Darüber hinaus ist es wichtig, sich daran zu erinnern, dass regelmäßige Ausdrücke standardmäßig von Fall sensitiv sind. Sie müssen daher die entsprechenden Flags verwenden, wenn Sie den Fall ignorieren möchten.
Wie kann ich meine regulären Ausdrücke (Regex) testen? >
Es gibt mehrere Online -Tools, mit denen Sie Ihre regulären Ausdrücke testen können. Mit diesen Tools können Sie in der Regel einen regulären Ausdruck und eine Testzeichenfolge eingeben und dann die Teile der Testzeichenfolge hervorheben, die dem regulären Ausdruck entsprechen. Dies kann eine großartige Möglichkeit sein, Ihre regulären Ausdrücke zu debuggen und sicherzustellen, dass sie wie erwartet arbeiten. Ausdrücke in irgendeiner Form. Die spezifischen Syntax und die unterstützten Funktionen können jedoch zwischen den Sprachen variieren. Zum Beispiel unterstützen JavaScript, Python und Ruby alle regulären Ausdrücke, aber sie haben jeweils ihre eigene einzigartige Syntax und Funktionen. Obwohl reguläre Ausdrücke unglaublich leistungsfähig sein können, können sie auch ressourcenintensiv sein, wenn sie nicht ordnungsgemäß verwendet werden. Die Ausführung von komplexen regulären Ausdrücken kann lange dauern, insbesondere bei großen Textketten. Daher ist es wichtig, regelmäßige Ausdrücke mit Bedacht zu verwenden und sie so weit wie möglich zu optimieren.Wie kann ich meine regulären Ausdrücke (Regex) optimieren? Dazu gehören die Vermeidung unnötiger Quantifizierer, die Verwendung von Nicht-Rückfallgruppen, wenn Sie den übereinstimmenden Text nicht benötigen, und die Verwendung von Zeichenklassen anstelle von Wechsel, wo möglich. Darüber hinaus bieten einige regelmäßige Expressionsmotoren Optimierungsfunktionen wie faule Quantifizierer, die die Leistung verbessern können. verfügbar, um mehr über reguläre Ausdrücke zu erfahren. Dazu gehören Online -Tutorials, Bücher und interaktive Lernplattformen. Darüber hinaus verfügen viele Programmiersprachen über umfangreiche Dokumentation zu ihrer regulären Ausdrucksyntax und -funktionen. Um HTML oder XML zu analysieren, wird dies im Allgemeinen nicht empfohlen. Dies liegt daran, dass HTML und XML eine verschachtelte Struktur haben, die mit regulären Ausdrücken schwer genau erfassen kann. Stattdessen ist es normalerweise besser, einen dedizierten HTML- oder XML -Parser zu verwenden.
Was sind einige Alternativen zu regulären Ausdrücken (Regex)? Abhängig von der vorliegenden Aufgabe sind Sie möglicherweise besser dran, einen anderen Ansatz zu verwenden. Beispielsweise können Sie für einfache String-Manipulationsaufgaben möglicherweise integrierte String-Methoden anstelle von regulären Ausdrücken verwenden. Für das Parsen von HTML oder XML verwenden Sie normalerweise einen speziellen Parser. Und für komplexe Textverarbeitungsaufgaben möchten Sie möglicherweise in Betracht ziehen, eine Bibliothek für natürliche Sprachverarbeitung zu verwenden.
Das obige ist der detaillierte Inhalt vonEntmystifizierende Regex mit praktischen Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.
