Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development
Code

8 Reguläre Ausdrücke, die Sie wissen meussen

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Alex Grigorovich (you can also view the original English article)

Reguläre Ausdrücke sind eine eigene Sprache. Wenn Sie eine neue Programmiersprache lernen, sind sie diese kleine Untersprache, die auf den ersten Blick keinen Sinn ergibt. Oft müssen Sie ein anderes Tutorial, einen Artikel oder ein Buch lesen, nur um das beschriebene "einfache" Muster zu verstehen. Heute werden wir acht reguläre Ausdrücke überprüfen, die Sie für Ihr nächstes Codierungsprojekt kennen sollten.

Bevor Sie beginnen, sollten Sie sich einige der Regex-Apps auf dem Envato Market ansehen, zum Beispiel:

RegEx Extractor

Sie können E-Mails, Proxys, IPs, Telefonnummern, Adressen, HTML-Tags, URLs, Links, Daten usw. extrahieren. Fügen Sie einfach einen oder mehrere reguläre Ausdrücke und Quell-URLs ein und starten Sie den Prozess.

Extrahieren, kratzen, analysieren, ernten.

Anwendungsbeispiele

  • Extrahieren Sie E-Mails aus einem alten CSV-Adressbuch.
  • Extrahiere Bildquellen aus HTML-Dateien.
  • Extrahieren Sie Proxies von Online-Websites.
  • Extrahiere URL-Ergebnisse von Google.

PHP Regular Expression Tester

  1. Schneller Regex-Tester
  2. AJAX-basiert
  3. jQuery usw. sind nicht erforderlich.
  4. Keine Datenbank erforderlich
  5. Werbung bereit

MyRegExp

Dieses Element ist ein PHP-RegEx-Builder, mit dem Sie reguläre Ausdrücke in einer erweiterbaren PHP-Syntax erstellen können. Sie können:

  1. Erstellen Sie reguläre Ausdrücke mit einer einfachen PHP-Syntax
  2. Überprüfen Sie die Strings mit dem erstellten RegEx
  3. Baue RegEx's und hol sie
  4. Wenden Sie preg_match auf eine RegEx an
  5. Ersetzen Sie eine Zeichenfolge durch das erstellte RegEx

All das in einer PHP-Syntax. Keine kaputten Köpfe mehr, die versuchen, einfaches oder komplexes RegEx zu machen!


Hintergrundinformationen zu regulären Ausdrücken

Das hat Wikipedia zu ihnen zu sagen:

In der Datenverarbeitung bieten reguläre Ausdrücke ein präzises und flexibles Mittel zum Identifizieren von Textstrings von Interesse, wie z. B. bestimmte Zeichen, Wörter oder Muster von Zeichen. Reguläre Ausdrücke (abgekürzt Regex oder Regexp mit Regexes Pluralformen, Regexps oder Regexen) werden in einer formalen Sprache geschrieben, die von einem regulären Ausdrucksprozessor interpretiert werden kann, ein Programm, das entweder als Parsergenerator dient oder Text prüft und Teile identifiziert die der angegebenen Spezifikation entsprechen.

Das sagt mir nicht viel über die tatsächlichen Muster. Die Regexes, die ich heute durchgehen werde, enthalten Zeichen wie \ w, \ s, \ 1 und viele andere, die etwas völlig anderes darstellen, als sie aussehen.

Wenn Sie etwas über reguläre Ausdrücke lernen möchten, bevor Sie diesen Artikel weiter lesen, sollten Sie die Screencast-Serie Reguläre Ausdrücke für Dummies sehen.

Mit den acht regulären Ausdrücken, die wir heute durchgehen, können Sie ein (n): Benutzername, Passwort, E-Mail, Hexadezimalwert (wie #fff oder #000), Slug, URL, IP-Adresse und ein HTML-Tag abgleichen. Wenn die Liste ausfällt, werden die regulären Ausdrücke immer verwirrender. Die Bilder für jede Regex am Anfang sind leicht zu folgen, aber die letzten vier sind durch das Lesen der Erklärung leichter zu verstehen.

Die wichtigste Sache, die man sich über reguläre Ausdrücke merken sollte, ist, dass sie fast gleichzeitig vorwärts und rückwärts gelesen werden. Dieser Satz macht mehr Sinn, wenn wir über übereinstimmende HTML-Tags sprechen.

Hinweis: Die in den regulären Ausdrücken verwendeten Trennzeichen sind Schrägstriche "/". Jedes Muster beginnt und endet mit einem Trennzeichen. Wenn ein Forward-Schrägstrich in einer Regex angezeigt wird, müssen wir ihn mit einem umgekehrten Schrägstrich entfernen: "\ /".


1. Übereinstimmung mit einem Benutzernamen

Matching a username

Muster:

Beschreibung:

Wir beginnen damit, dem Parser zu sagen, dass er den Anfang der Zeichenfolge (^) finden soll, gefolgt von einem beliebigen Kleinbuchstaben (a-z), einer Zahl (0-9), einem Unterstrich oder einem Bindestrich. Nächste Sritte ist {3,16} sicher, dass sie mindestens 3 dieser Zeichen sind, aber nicht mehr als 16. Schließlich wollen wir das Ende der Zeichenkette ($).

Zeichenfolge, die übereinstimmt:

my-us3r_n4m3

Zeichenfolge, die nicht übereinstimmt:

th1s1s-wayt00_l0ngt0beausername (zu lang)


2. Passendes Passwort

Matching a password

Muster:

Beschreibung:

Die Zuordnung eines Passworts ist der Übereinstimmung mit einem Nutzernamen sehr ähnlich. Der einzige Unterschied besteht darin, dass wir anstelle von 3 bis 16 Buchstaben, Ziffern, Unterstrichen oder Bindestrichen 6 bis 18 von ihnen ({6,18}) möchten.

Zeichenfolge, die übereinstimmt:

myp4ssw0rd

Zeichenfolge, die nicht übereinstimmt:

mypa$$w0rd (enthält ein Dollarzeichen)


3. Übereinstimmen eines Hex-Werts

Matching a hex valud

Muster:

Beschreibung:

Wir beginnen mit dem Parser, den Anfang der Zeichenkette (^) zu finden. Als nächstes ist ein Nummernzeichen optional, da ein Fragezeichen folgt. Das Fragezeichen teilt dem Parser mit, dass das vorangehende Zeichen - in diesem Fall ein Nummernzeichen - optional ist, aber "gierig" sein und es erfassen soll, wenn es da ist. Als nächstes können wir innerhalb der ersten Gruppe (erste Gruppe von Klammern) zwei verschiedene Situationen haben. Der erste ist ein Kleinbuchstabe zwischen a und f oder eine Zahl sechsmal. Der senkrechte Balken sagt uns, dass wir auch drei Kleinbuchstaben zwischen a und f oder Zahlen haben können. Schließlich wollen wir das Ende der Zeichenkette ($).

Der Grund dafür, dass ich die sechs Zeichen vorher gesetzt habe, ist, dass der Parser einen Hex-Wert wie #ffffff erfasst. Wenn ich es umgekehrt hätte, so dass die drei Zeichen zuerst kamen, würde der Parser nur #fff und nicht die anderen drei fs aufnehmen.

Zeichenfolge, die übereinstimmt:

#a3c113

Zeichenfolge, die nicht übereinstimmt:

#4d82h4 (enthält den Buchstaben h)


4. Zu einer Schnecke passen

Matching a slug

Muster:

Beschreibung:

Sie werden diese Regex verwenden, wenn Sie jemals mit mod_rewrite und hübschen URLs arbeiten müssen. Wir beginnen damit, dem Parser zu sagen, dass er den Anfang des Strings (^) finden soll, gefolgt von einem oder mehreren (dem Pluszeichen) Buchstaben, Zahlen oder Bindestrichen. Schließlich wollen wir das Ende der Zeichenkette ($).

Zeichenfolge, die übereinstimmt:

my-title-here

Zeichenfolge, die nicht übereinstimmt:

my_title_here (enthält Unterstriche)


5. Abgleich einer E-Mail

Matching an email

Muster:

Beschreibung:

Wir beginnen mit dem Parser, den Anfang der Zeichenkette (^) zu finden. Innerhalb der ersten Gruppe passen wir einen oder mehrere Kleinbuchstaben, Zahlen, Unterstriche, Punkte oder Bindestriche an. Ich bin dem Punkt entkommen, weil ein nicht-entdeckter Punkt ein beliebiges Zeichen bedeutet. Direkt danach muss es ein at-Zeichen geben. Weiter ist der Domänenname, der sein muss: ein oder mehrere Kleinbuchstaben, Zahlen, Unterstriche, Punkte oder Bindestriche. Dann ein weiterer (entrückter) Punkt, wobei die Erweiterung zwei bis sechs Buchstaben oder Punkte umfasst. Ich habe 2 bis 6 wegen der länderspezifischen TLDs (.ny.us oder .co.uk). Schließlich wollen wir das Ende der Zeichenkette ($).

Zeichenfolge, die übereinstimmt:

john@doe.com

Zeichenfolge, die nicht übereinstimmt:

john@doe.something (TLD ist zu lang)


6. Übereinstimmen einer URL

Matching a url

Muster:

Beschreibung:

Diese Regex ist fast so, als würde man den Endteil der obigen Regex nehmen, indem man zwischen "http: //" und einer Dateistruktur am Ende klopft. Es klingt viel einfacher als es wirklich ist. Zu Beginn suchen wir mit dem Caret nach dem Anfang der Zeile.

Die erste einfangende Gruppe ist eine Option. Die URL kann mit "http: //", "https: //" oder keiner von beiden beginnen. Ich habe ein Fragezeichen hinter den s, um URLs zu erlauben, die http oder https haben. Um diese ganze Gruppe optional zu machen, habe ich am Ende ein Fragezeichen hinzugefügt.

Als nächstes folgt der Domänenname: eine oder mehrere Zahlen, Buchstaben, Punkte oder Bindestriche, gefolgt von einem weiteren Punkt und dann zwei bis sechs Buchstaben oder Punkten. Der folgende Abschnitt enthält die optionalen Dateien und Verzeichnisse. Innerhalb der Gruppe möchten wir eine beliebige Anzahl von Schrägstrichen, Buchstaben, Zahlen, Unterstrichen, Leerzeichen, Punkten oder Bindestrichen anpassen. Dann sagen wir, dass diese Gruppe so oft angepasst werden kann, wie wir wollen. So können mehrere Verzeichnisse am Ende mit einer Datei verglichen werden. Ich habe den Stern anstelle des Fragezeichens verwendet, weil der Stern null oder mehr bedeutet, nicht null oder eins. Wenn dort ein Fragezeichen verwendet werden soll, kann nur eine Datei / ein Verzeichnis gefunden werden.

Dann wird ein abschließender Schrägstrich angepasst, aber er kann optional sein. Schließlich enden wir mit dem Ende der Linie.

Zeichenfolge, die übereinstimmt:

https://net.tutsplus.com/about

Zeichenfolge, die nicht übereinstimmt:

http://google.com/some/file!.html (enthält ein Ausrufezeichen)


7. Zuordnung einer IP-Adresse

Matching an IP address

Muster:

Beschreibung:

Nun, ich werde nicht lügen, ich habe diesen Regex nicht geschrieben; Ich habe es von hier bekommen. Das heißt aber nicht, dass ich Charakter für Charakter nicht auseinander reißen kann.

Die erste Fanggruppe ist wirklich keine gefangene Gruppe, weil

wurde innerhalb platziert, die den Parser anweist, diese Gruppe nicht zu erfassen (mehr dazu in der letzten Regex). Wir möchten auch, dass diese nicht erfasste Gruppe dreimal wiederholt wird - die {3} am Ende der Gruppe. Diese Gruppe enthält eine andere Gruppe, eine Untergruppe und einen Literalpunkt. Der Parser sucht nach einer Übereinstimmung in der Untergruppe und dann nach einem Punkt, um weiterzugehen.

Die Untergruppe ist auch eine andere Nicht-Erfassungsgruppe. Es ist nur eine Menge von Zeichensätzen (Dinge in Klammern): die Zeichenfolge "25", gefolgt von einer Zahl zwischen 0 und 5; oder die Zeichenfolge "2" und eine Zahl zwischen 0 und 4 und eine beliebige Zahl; oder eine optionale Null oder Eins gefolgt von zwei Zahlen, wobei die zweite optional ist.

Nachdem wir drei davon gefunden haben, geht es auf die nächste nicht einfangende Gruppe. Dieser will: die Zeichenfolge "25" gefolgt von einer Zahl zwischen 0 und 5; oder die Zeichenfolge "2" mit einer Zahl zwischen 0 und 4 und einer anderen Nummer am Ende; oder eine optionale Null oder Eins gefolgt von zwei Zahlen, wobei die zweite optional ist.

Wir beenden diese verwirrende Regex mit dem Ende der Zeichenfolge.

Zeichenfolge, die übereinstimmt:

73.60.124.136 (nein, das ist nicht meine IP-Adresse: P)

Zeichenfolge, die nicht übereinstimmt:

256.60.124.136 (die erste Gruppe muss "25" und eine Zahl zwischen null und fünf sein)


8. Zuordnen eines HTML-Tags

Matching an HTML tag

Muster:

Beschreibung:

Einer der nützlicheren Regexes auf der Liste. Es passt jedes HTML-Tag mit dem darin enthaltenen Inhalt an. Wie üblich beginnen wir mit dem Start der Linie.

Zuerst kommt der Name des Tags. Es muss einen oder mehrere Buchstaben lang sein. Dies ist die erste Erfassungsgruppe, sie ist praktisch, wenn wir das schließende Tag greifen müssen. Die nächste Sache sind die Attribute des Tags. Dies ist ein beliebiges Zeichen, jedoch ein Größer-als-Zeichen (>). Da dies optional ist, aber ich möchte mehr als ein Zeichen zuordnen, wird der Stern verwendet. Das Pluszeichen bildet das Attribut und den Wert, und der Stern gibt so viele Attribute an, wie Sie möchten.

Als nächstes kommt die dritte Nicht-Erfassungsgruppe. Im Inneren enthält es entweder ein Größer-als-Zeichen, einige Inhalte und ein schließendes Tag; oder einige Leerzeichen, ein Schrägstrich und ein Größer-als-Zeichen. Die erste Option sucht nach einem Größer-als-Zeichen gefolgt von einer beliebigen Anzahl von Zeichen und dem schließenden Tag. \ 1 wird verwendet, das den Inhalt darstellt, der in der ersten Erfassungsgruppe erfasst wurde. In diesem Fall war es der Name des Tags. Wenn dies nicht möglich ist, suchen wir nach einem selbstschließenden Tag (zB einem img-, br- oder hr-Tag). Dies muss ein oder mehrere Leerzeichen gefolgt von "/>" haben.

Die Regex wird mit dem Ende der Zeile beendet.

Zeichenfolge, die übereinstimmt:

Nettuts">http://net.tutsplus.com/">Nettuts+

Zeichenfolge, die nicht übereinstimmt:

<img src="img.jpg" alt="My image>" /> (attributes can't contain greater than signs)


Fazit

Ich hoffe, dass Sie die Ideen hinter regulären Ausdrücken ein bisschen besser verstanden haben. Hoffentlich werden Sie diese Regexes in zukünftigen Projekten verwenden! Oftmals müssen Sie einen Regex nicht für jeden Buchstaben entziffern, aber manchmal hilft es Ihnen beim Lernen. Denken Sie daran, haben Sie keine Angst vor regulären Ausdrücken, sie scheinen es nicht zu sein, aber sie machen Ihnen das Leben viel leichter. Versuchen Sie einfach, den Namen eines Tags aus einer Zeichenfolge ohne reguläre Ausdrücke zu ziehen!

Folgen Sie uns auf Twitter, oder abonnieren Sie den NETTUTS RSS-Feed für mehr tägliche Web-Entwicklungstuts und -artikel. Und schau dir einige dieser Regex-Apps auf dem Envato Market an.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.