Regex-Spickzettel/Grundlagen
Reguläre Ausdrücke (regex oder regexp) sind ein sehr nützliches Werkzeug, um bestimmte Muster in beliebigem Text zu identifizieren, was dabei hilft, Informationen unabhängig vom Format des Textes zu extrahieren.
Regex kann verwendet werden, um Eingaben zu validieren, Web-Scraping, bestimmte Strings in Dokumenten zu finden, Syntax-Validierung für Compiler und so viele andere Beispiele.
Regex wird häufig in mehreren Programmiersprachen verwendet, die fast dieselbe Syntax verwenden, daher gibt dieser Artikel vor, die grundlegenden Regex-Operatoren zu zeigen.
Die folgenden Abschnitte zeigen die verschiedenen Operatoren, die für Regex verwendet werden, sowie einige Beispiele. Sie können Ihre regulären Ausdrücke auch mit einigen Erläuterungen auf dieser Seite testen.
Anker
Zeichen | Verwenden |
---|---|
^ | Gibt den Anfang der Zeichenfolge an. Es wird nur die Zeichenfolge gefunden, die mit den folgenden Zeichen beginnt |
$ | Gibt das Ende der Zeichenfolge an. Dies entspricht jeder Zeichenfolge, die mit dem/den Zeichen vor dem Symbol „$“ endet |
abc | Entspricht jeder Zeichenfolge, die die Zeichenfolge „abc“ enthält |
Einige Beispiele sind:
Beispiel | Beschreibung | Beispiele für übereinstimmende Zeichenfolgen |
---|---|---|
^A | Übereinstimmung mit allen Zeichenfolgen, die mit einem A beginnen | “A n Apfel ist im Baum“, „A neues Restaurant“ |
Ende$ | Entspricht einer Zeichenkette, die mit der Zeichenfolge „end“ endet | „Das Ende “, „Tun wir Ende vor ” |
^Hallo Welt$ | Entspricht genau der Zeichenfolge „Hello world“ | “Hallo Welt ” |
Reihenfolge | Entspricht jeder Zeichenfolge, die den Text „Bestellung“ enthält | „Meine Bestellung Nummer ist 54” |
Quantifizierer
Quantifizierer werden verwendet, um die Zeiten darzustellen, zu denen der vorangehende Charakter oder die Gruppe von Charakteren in unserem Match erscheinen soll.
Zeichen | Verwenden |
---|---|
* | Gibt null oder mehr an |
+ | Zeigt ein oder mehrere an |
? | Gibt null oder eins an |
x{n} | Wird verwendet, um anzugeben, wie oft ('n') das vorherige Zeichen ('x') erscheinen soll |
x{n, } | Wird verwendet, um anzugeben, wie oft ('n') das vorherige Zeichen ('x') mindestens erscheinen soll |
x{n, m} | Wird verwendet, um die minimale ('n') und maximale ('m') Häufigkeit festzulegen, mit der das vorherige Zeichen ('x') erscheinen soll |
Einige Beispiele sind:
Beispiel | Beschreibung | Beispiele für übereinstimmende Zeichenfolgen |
---|---|---|
Hallo!* | Entspricht einer beliebigen Zeichenfolge „Hallo“, gefolgt von null oder mehr „!“-Zeichen | “Hallo “, „Hallo! “, Hallo!! |
Hallo!+ | Entspricht einer beliebigen Zeichenfolge „Hallo“, gefolgt von einem oder mehreren „!“-Zeichen | “Hallo! “, „Hallo!! ” |
Hallo!? | Entspricht einer beliebigen Zeichenfolge „Hallo“, gefolgt von null oder einem „!“-Zeichen | “Hallo “, „Hallo! ” |
(ha){2,4} | Entspricht jeder Zeichenfolge, die die Zeichengruppe „ha“ zwei- bis viermal wiederholt | “haha “, „hahaha “, „hahahaha ” |
ODER-Operator
Zeichen | Verwenden |
---|---|
a|b | Entspricht jeder Zeichenfolge, die entweder „a“ oder „b“ enthält |
[ ] | Wird zur Darstellung einer Liste verwendet, passt also zu einer Zeichenfolge, die eines der Zeichen in der Liste enthält |
Einige Beispiele sind:
Beispiel | Beschreibung | Beispiele für übereinstimmende Zeichenfolgen |
---|---|---|
se(a|e) | Entspricht jeder Zeichenfolge, die den Text „se“ gefolgt von entweder einem „a“ oder einem „e“ enthält | “siehe “, „Meer ” |
a[bcd] | Entspricht jeder Zeichenfolge, die ein „a“ gefolgt von entweder „b“, „c“ oder „d“ enthält | “ab “, „ac “, „Anzeige ” |
Zeichenklassen
Mit den Operatoren für Zeichenklassen können Sie Zeichen innerhalb einer Kategorie (Klasse) abgleichen. Diese Operatoren bieten ihre Negationen an, die dieselben wie die normalen Operatoren sind, jedoch in Großbuchstaben.
Zeichen | Verwenden |
---|---|
\d | Entspricht einer einzelnen Ziffer Charakter |
\w | Entspricht einem einzelnen Wort Zeichen (Buchstaben, Zahlen und Unterstrich) |
\s | Entspricht einem einzelnen Leerzeichen Zeichen, einschließlich Tabulatoren und Zeilenumbrüche |
\D | Entspricht einer einzelnen Nicht-Ziffer Charakter |
\W | Entspricht einem einzelnen Nichtwort Zeichen (Buchstaben, Zahlen und Unterstrich) |
\S | Entspricht einem einzelnen Nicht-Leerzeichen Zeichen, einschließlich Tabulatoren und Zeilenumbrüche |
. | Entspricht jedem einzelnen Zeichen |
Flaggen
Regex verwendet normalerweise die Form /pattern/
. Am Ende können wir die folgenden Flags verwenden:
Flagge | Beschreibung |
---|---|
g | Die globale flag wird verwendet, um nach allen einzelnen Übereinstimmungen innerhalb der Zeichenfolge zu suchen. Wenn es nicht verwendet wird, wird der Ausdruck nach der ersten Übereinstimmung zurückgegeben |
m | Die Mehrzeile Flag erlaubt die Verwendung von ^ und $ als Anfang und Ende einer Zeile, nicht als Anfang und Ende der Zeichenfolge, die mehrere Zeilen enthalten kann |
i | Der unempfindliche Flag macht die Groß-/Kleinschreibung des regulären Ausdrucks unempfindlich |
Schlussfolgerungen
Regex hat viele Verwendungsmöglichkeiten. Sie können die in diesem Artikel erläuterten einfachen Operatoren kombinieren, um komplexe Suchmuster zu erstellen. Ein Beispiel ist die Validierung einer E-Mail-Adresse, dies kann mit dem folgenden regulären Ausdruck erfolgen:
^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$
Dieses Beispiel entspricht einer vollständigen Zeichenfolge, für die ein Muster in der folgenden Reihenfolge gesucht wird:
[\w-\.]+
:eine Kombination aus einem oder mehreren Wortzeichen, Bindestrichen oder Punkten@
:das @-Symbol([\w-]+\.)+
:eine oder mehrere Kombinationen aus einem oder mehreren Wortzeichen oder Bindestrichen, die mit einem Punkt enden (für Domains und Subdomains in der E-Mail wie email.rackspace.)[\w-]{2,4}
:eine Kombination aus 2, 3 oder 4 Wortzeichen oder Bindestrichen für den Endteil der E-Mail (com)
Genau wie dieses Beispiel gibt es viele andere, die für verschiedene Zwecke leicht implementiert werden können.