Anfängerhandbuch für reguläre Ausdrücke (Regex)
Ein regulärer Ausdruck ist eine Menge von Zeichen, die ein Muster bilden, das in einer Zeichenkette gesucht werden kann. Regex kann für die Validierung verwendet werden, um Kreditkartennummern zu validieren, für die Suche, dh über komplexe Textübereinstimmungen, und um übereinstimmenden Text durch eine andere Zeichenfolge zu ersetzen . Es hat auch großartige Unterstützung für mehrere Sprachen - lernen Sie es einmal und Sie können es in vielen Programmiersprachen verwenden.
Ich habe nur wenige Leute gesehen, die einen ersten Blick auf Regex werfen und es komplett ignorieren. Ich beschuldige sie nicht; Regex-Syntax ist komplex und wird viele wie diese Befehlszeilensprachen nur noch schlimmer machen. Aber dann ist jede neue Sache unheimlich und scheint auf den ersten Blick unmöglich zu sein. Wenn ich Horatius Worte ausleihe, werde ich das sagen; Fangen Sie an, seien Sie mutig und wagen Sie, weise zu sein .
Über Regex
Regex hatte seine Wurzeln in Neurowissenschaften und Mathematik und wurde erst 1968 von Ken Thompson im QED-Texteditor zur Textsuche programmiert. Jetzt ist es Teil vieler Programmiersprachen wie Perl, Java, Python, Ruby und JavaScript.
Schauen wir uns einige Beispiele an, wie Regex funktioniert.
Ich werde JavaScript in meinen Beispielen verwenden. Um Anfänger zu bestehen, müssen Sie nun alle Zeichen, Klassen, Quantifizierer, Modifikatoren und Methoden lernen , die in Regex verwendet werden. Hier ist ein Link zur Seite "Regulärer Ausdruck" des Mozilla Developer Network, auf der Sie eine Tabelle mit all diesen sehen können. Du kannst auch auf den Cheatsheet am Ende dieses Beitrags mit den meisten verwendeten Zeichen verweisen.
Lassen Sie uns ein einfaches Beispiel mit einer Erklärung sehen. Dies ist eine Regex.
Dies ist, was die obige Regex in einer Zeile suchen wird, ein Zeichen "B", gefolgt von mindestens einem beliebigen Zeichen zwischen (und einschließlich) "a" bis "z", "A" bis "Z" und Zahlen von 0 bis 9.Hier ist ein Beispiel für Übereinstimmungen in einer hervorgehobenen Zeile:
Korb Birne, B12 Vitamin, BaSO4 , N BC Unternehmen
Der obige Regex stoppt die Suche bei Korb und eine positive Antwort zurückgeben. Das liegt daran, dass der globale Modifikator ' g
' angegeben werden muss, wenn die Regex in alle möglichen Übereinstimmungen schauen soll.
Sehen wir uns nun an, wie dieser Ausdruck in JavaScript verwendet wird. Die test
lautet: Wenn eine Übereinstimmung gefunden wird, true
, sonst false
.
var input = "Ihre Testzeichenfolge", regex = / B [a-zA-Z \ d] + /; if (! regex.test (input)) alert ('Keine Übereinstimmung gefunden'); else alert ('Eine Übereinstimmung wird gefunden');
Versuchen wir es mit einer anderen Methode: match
gibt die Übereinstimmungen zurück, die in einem Array gefunden wurden.
var input = "Ihre Testzeichenfolge", regex = / B [a-zA-Z \ d] + / g, / * Ich habe den globalen Modifikator 'g' zur Regex hinzugefügt, um alle Treffer zu erhalten * / ary = input.match (Regex); if (ary === null) alert ('Keine Übereinstimmung gefunden'); else alert ('Übereinstimmungen sind:' + ary.toString ());
Wie wäre es mit String replace
? Lass es uns jetzt mit Regex versuchen.
var input = "Ihre Testzeichenfolge", regex = / B [a-zA-Z \ d] + / g; Warnung (input.replace (regex, "#"));
Unten ist ein Codepen für Sie zu optimieren. Klicken Sie auf die Registerkarte "JavaScript", um den JS-Code anzuzeigen.
Übungen
Für Übungen können Sie "Regex-Übungen" googlen und versuchen, sie zu lösen. Folgendes ist zu erwarten, wenn Sie diese Übungen nach Schwierigkeitsgraden versuchen.
Basic
Für mich reicht es, ein Passwort zu validieren . Validieren Sie daher ein Passwort mit einer Länge von 8 bis 16 Zeichen, alphanumerisch mit der von Ihnen gewählten Sonderzeichenart.
Mittlere
Hier sollten Sie mit mehr realen Daten üben und einige weitere Regex-Punkte wie Lookahead, Lookbehind Assertions und passende Gruppen lernen.
- PIN-Codes, Hexadezimalzahlen, Datumsangaben, E-Mail-ID, Fließkommazahl validieren.
- Ersetzen Sie die folgende Null, Whitespaces, eine Menge übereinstimmender Wörter
- Extrahieren Sie verschiedene Teile einer URL
Fortgeschritten
Sie können die Lösungen der oben genannten Übungen optimieren - der optimale Regex für E-Mail enthält Tausende von Zeichen - nehmen Sie es so weit, wie Sie sich wohl fühlen, und das reicht . Sie können auch versuchen:
- Parsen von HTML oder XML (obwohl in der realen Welt davon abgeraten wird, dies zu tun, weil die Verwendung von regulärem Ausdruck, um nicht-reguläre Sprachen wie HTML zu parsen, niemals idiotensicher ist. Plus-XML-Parsing ist eine schwierige Aufgabe, besser geeignet für Fortgeschrittene)
- Tags ersetzen
- Kommentare entfernen (außer den bedingten Kommentaren des IE)
Werkzeuge
Tools zur Visualisierung von Regex sind eines der coolsten Dinge für mich. Wenn Sie jemals einen langen komplexen Regex finden, kopieren Sie ihn einfach in eines dieser Werkzeuge und Sie werden den Fluss deutlich sehen können. Außerdem gibt es viele Tools, die Sie verwenden können, um mit dem Regex-Code zu experimentieren. Sie zeigen auch Beispiele und Cheatsheets zusammen mit Share-Funktionen.
- Debuggex - Es zeichnet ein Regex-Diagramm gemäß Ihrer Eingabe und Sie können von dort aus schnell an StackOverflow weitergeben.
- RegExr - Sie können Ihre Regex mit diesem testen. Es hat auch eine Referenz, einen Cheatsheet und Beispiele, um Ihnen zu helfen.
- Refiddle - Im Moment können Sie außer JavaScript auch mit Ruby und .NET-Versionen von Regex experimentieren.
Regex Cheatsheet
Zeichen | Definition |
[ABC] | Jedes einzelne Zeichen a, b oder c |
[^ abc] | Jedes andere Zeichen als a, b oder c |
[az] | Zeichen zwischen (einschließlich) a bis z |
[^ az] | Zeichen außer von a bis z |
[AZ] | Zeichen zwischen (einschließlich) A bis Z |
. | Irgendein einzelnes Zeichen |
\ s | Irgendein Leerzeichen-Zeichen |
\ S | Irgendein Nicht-Leerzeichen-Zeichen |
\ d | Jede Ziffer von 0 bis 9 |
\ D | Irgendeine Nicht-Ziffer |
\ w | Jedes Wortzeichen (Buchstabe, Nummer und Unterstrich) |
\ W | Jedes Nicht-Wort-Zeichen |
(...) | Capture alles eingeschlossen |
(a | b) | Passen Sie entweder a oder b an |
ein? | Charakter a ist entweder abwesend oder einmal vorhanden |
ein* | Charakter a ist entweder abwesend oder mehrmals vorhanden |
a + | Zeichen a ist ein- oder mehrmals vorhanden |
a {3} | 3 Vorkommen von Charakter nacheinander |
a {3, } | 3 oder mehr Zeichenfolgen nacheinander |
a {3, 6} | 3 bis 6 Charaktervorkommen nacheinander |
^ | Beginn der Zeichenfolge |
$ | Ende der Zeichenfolge |
\ b | Eine Wortgrenze. Wenn ein Zeichen das letzte oder erste Wortzeichen eines Worts ist oder Wenn ein Zeichen zwischen einem Wort- oder Nichtwortzeichen steht |
\ B | Nicht-Wortgrenze |
Jetzt lesen: Reguläre Ausdrücke: 30 Nützliche Tools und Ressourcen
20 kostenlose & nützliche Photoshop-Plugins, die alle Designer haben müssen
Adobe Photoshop ist eine leistungsstarke Plattform, mit der Kreative ihre Arbeit auffrischen können. Manchmal fehlen jedoch viele Funktionen, die die Produktivität und den Arbeitsablauf verbessern und das Leben erleichtern. Zum Glück für uns unterstützt Photoshop Erweiterungen oder Plugins, die ihre Fähigkeiten erweitern . Und
Stellen Sie Timer und Countdown für alle Ereignisse mit dieser App ein
Nichts erzeugt Vorfreude wie ein Countdown-Timer, also warum nicht einen für Ihr iOS- oder Android-Gerät, mit dem Sie einen für eine bevorstehende Veranstaltung über den passenden Countdown festlegen können .Countdown ist eine App, mit der Countdown- Timer für verschiedene Ereignisse eingerichtet werden können .Das Ei