Fur neue Entwickler können reguläre Ausdrucke (oder Regex, wie sie allgemein bekannt sind) aufgrund der seltsamen, unbekannten Syntax abschreckend sein:
Als ich ein neuer Entwickler war und den obigen Ausdruck zum ersten Mal sah, war mein erster Gedanke "was soll ich sagen? Ich werde dieses Kauderwelsch nie lernen k√∂nnen. Das ist mir zu viel. Ich kann ‚Äôes nicht.‚"
Aber du kannst es! Es geht nur darum, das anfängliche uberwältigende Gefuhl zu uberwinden, dass reguläre Ausdrucke zu fremd sind. Genauso wie das Erlernen oder Sprechen einer Fremdsprache – Sobald Sie den Dreh raus haben, wird es ziemlich naturlich. Versprochen!
In diesem Artikel werfen wir einen Blick darauf, was reguläre Ausdrucke sind, warum sie verwendet werden und wie man sie in Python verwendet. Am Ende dieses Artikels haben Sie ein solides Verständnis von regulären Ausdrucken, sodass Sie interpretieren können, was der obige Ausdruck bedeutet!
Was sind regul√§re Ausdrucke?
Wann Wenn wir uns ansehen, was ein regul√§rer Ausdruck ist, mussen wir uns daran erinnern, was ein String ist. Denken Sie daran, dass eine Zeichenfolge nur eine Ansammlung von Zeichen ist, die aneinandergereiht und von Anfuhrungszeichen umgeben sind:
&ldquo ;Hallo Welt‚" ‚Äû555-555-5555‚" "John Doe 123 Main St. Anywhere, USA 99999-9999‚" "[email protected]‚"
Dies sind alles Beispiele fur Zeichenfolgen. Sie können beliebig lang oder gar nicht lang sein. Reguläre Ausdrucke, oder häufiger als regex abgekurzt, sind Ausdrucke, deren Komponenten Muster mit Strings abgleichen, um Informationen zu erhalten.
81 % der Teilnehmer gaben an Sie fuhlten sich nach dem Besuch eines Bootcamps sicherer in Bezug auf ihre Berufsaussichten im Tech-Bereich. Lassen Sie sich noch heute in ein Bootcamp einweisen.
Der durchschnittliche Bootcamp-Absolvent verbrachte weniger als sechs Monate im Karriereubergang, vom Beginn eines Bootcamps bis zur Suche nach seinem ersten Job.
Das Tolle an Regex ist, dass es sich nicht unbedingt um die Sprache kummert, die Sie in – es ist ziemlich sprachunabhängig. Der Unterschied liegt in den Methoden der Sprache und der Art und Weise, wie Aktionen mit diesen Ausdrucken ausgefuhrt werden.
Wofur werden regul√§re Ausdrucke verwendet?
Regex ist ein Muster, das wir gerne hätten speziell in einer Zeichenfolge suchen. Wir können Regex verwenden, um nach einem bestimmten Ausdruck oder Muster zu suchen, um es durch etwas anderes zu ersetzen, oder wir können Formulare validieren, um sicherzustellen, dass ein Benutzer Informationen in einem bestimmten Format eingibt, damit sie fur alle Benutzer konsistent sind.
Suchen und Ersetzen
Angenommen, wir haben eine Telefonnummer in diesem Format:
555 555 5555
Dies ist ein gultiges Format fur eine Telefonnummer in den USA. Aber was w√§re, wenn wir die Leerzeichen durch Bindestriche ersetzen wollten? Oder fugen Sie Klammern um die Vorwahl und einen Bindestrich hinzu, um sie besser lesbar zu machen?
Dafur können wir reguläre Ausdrucke verwenden! Wir gehen im nächsten Abschnitt darauf ein, wie das mit Python gemacht wird – Im Moment möchte ich, dass Sie ein allgemeines Gefuhl dafur bekommen, was Sie mit regulären Ausdrucken tun können und wie sie nutzlich sein können.
Das Ergebnis, das wir nach einer Suche und Ersetzung einer Telefonnummer in sehen wurden Python fur das Format, das wir verwenden möchten, wäre:
Es ist nicht erforderlich, in regulären Ausdrucken nach einem bestimmten Wert oder Index des Strings zu suchen, weil Wir können einfach nach den Mustern in den Strings suchen und alle Datensätze bearbeiten, die wir abgleichen mussen.
Validieren
Haben Sie jemals etwas auf einer Site ausgefullt, nur damit es angezeigt wird? eine Fehlermeldung wegen eines verpassten Symbols oder eines Musters, dem Sie nicht gefolgt sind? Höchstwahrscheinlich wurden reguläre Ausdrucke verwendet, um sicherzustellen, dass Ihre Eingabe mit dem ubereinstimmt, wonach die Datenbank sucht.
Dies wird als Validierung bezeichnet und ist beim Erstellen von Formularen sehr nutzlich, um sicherzustellen, dass eine Telefonnummer der folgt Format, in dem es sein soll, oder dass eine E-Mail-Adresse eine richtig formatierte E-Mail-Adresse ist oder ein Passwort mit den von Ihnen festgelegten Parametern ubereinstimmt, damit es ein gultiges Passwort ist (Länge, Sonderzeichen, Ziffern, Groß- oder Kleinschreibung). , usw.).
Dies hilft, Fehler in Ihrer Datenbank zu vermeiden, indem der Benutzer auf Tippfehler oder nicht ubereinstimmende Muster aufmerksam gemacht wird.
Im n√§chsten Abschnitt Wir werden uns die Komponenten oder Mustervergleicher ansehen, die regul√§re Ausdrucke erstellen.
Typen von Regex-Mustervergleichern
Buchstaben, Metazeichen und Quantifizierer machen die Arten von Mustervergleichern, die wir in Regex sehen. Ein Mustervergleicher ist ein Zeichen, das verwendet wird, um ein Muster in einer Zeichenfolge zu finden. Es ist der Hauptbaustein eines regul√§ren Ausdrucks.
Literale Zeichen
Das einfachste Beispiel fur einen Mustervergleicher in Regex ist ein Literal. Es stimmt mit einem hartcodierten Zeichen oder einer Zeichenfolge uberein.
Beispiele:
Hallo
‚áí Sammlung von funf verschiedenen Zeichen.
Wenn hier ein Regex-Muster angewendet wird, sucht es nach jedem dieser Zeichen nacheinander. "Hallo‚", "Hallo‚" oder "Hallo‚" eine Musterprufung bestehen wurde, aber "Hallo‚", "helo‚" oder "Hallo‚" wurde nicht.
"Karma-Karma trat in mein Leben, als ich es am dringendsten brauchte und half mir schnell bei einem Bootcamp. Zwei Monate nach meinem Abschluss fand ich meinen Traumjob, der meinen Werten und Zielen entsprach im Leben!"
Venus, Software Engineer bei Rockbot
A
‚áí Sammlung eines einzelnen Zeichens.
Da Regex nach verschiedenen Zeichen sucht, wird auch die Gro√ü-/Kleinschreibung beachtet. Also ‚ÄûA‚" bestanden, aber ‚Äûein‚" wurde nicht. Wir werden gleich darauf eingehen.
Ein einfacher Satz
. ‚áí Sammlung mehrerer unterschiedlicher Zeichen.
Regex sucht nacheinander nach jedem Zeichen im Ausdruck, wenn es einen String betrachtet. Wenn ‚ÄûEin einfacher Satz‚" nicht genau so in der gesuchten Zeichenfolge enthalten ist, wie sie in der Regex geschrieben ist, wurde sie nicht passieren.
Escape-Zeichen
Schauen Sie sich das letzte Beispiel an. Beachten Sie, dass ein vor dem Punkt steht. Ein Punkt in der Syntax regulärer Ausdrucke ist gleichbedeutend mit Schlusselwörtern in Sprachen wie JavaScript oder Python.
Sie können einen Punkt/Punkt nicht allein verwenden, wenn er Teil eines Musters in . sein soll Reguläre Ausdrucke. Sie mussen das Zeichen mit Escapezeichen versehen, damit die Engine fur reguläre Ausdrucke dies als wörtliche Darstellung eines Punkts anstelle der Regex-Bedeutung interpretiert.
Hier sind einige andere spezielle Zeichenfolgen, die mussen mit Escapezeichen versehen werden, wenn das Literalzeichen anstelle der ubersetzten Bedeutung verwendet werden soll, in die die Regex-Engine es kompiliert.
- Asterisk *
- Backslash /
- Plus +
- Caret ^
- Dollarzeichen $
- Punkt/Punkt .
- Pfeife |
- Frage Markieren ?
- Klammern – beide Arten ()
- Curly Braces – beide Typen {}
Literale Zeichen in Regex stimmen genau mit dem Zeichen uberein, das Sie als Teil des Musters einfugen. Wenn Sie ein oben aufgefuhrtes Zeichen einfugen möchten, mussen Sie es mit Escapezeichen versehen, damit es auch Teil Ihrer Regex sein kann.
Gemeinsame √úbereinstimmungen
Der Zweck von a Matcher ist das Abgleichen mehrerer Buchstaben in einem Muster. Diese Sammlung von Mustervergleichssymbolen ist bei den Programmiersprachen, die Regex verwenden, ziemlich konsistent.
Matcher | Beschreibung | Beispiel |
. | Entspricht jedem Zeichen | nw wurde mit jetzt, naw oder neu usw. ubereinstimmen. Jedes Zeichen besteht den Test |
^regex | Sucht nach Muster bei Zeilenanfang | ^hello wurde mit hello in einer Zeile ubereinstimmen, die mit diesem Muster beginnt |
regex$ | Sucht nach Muster am Ende der Zeile | world$ wurde mit world in einer Zeile ubereinstimmen, die mit diesem Muster endet |
[abc] | Übereinstimmungen a, b oder c | [misp]wird als Satz betrachtet und wurde mit jeder Zeichenfolge ubereinstimmen, die eines dieser Zeichen enthält. Beispiel: es könnte mit allen einzelnen Buchstaben in Mississippi und Miss ubereinstimmen, aber nur mit einigen Buchstaben in Marsh und Missouri |
[abc][xyz] | Matc hes a, b oder c gefolgt von x, y oder z | /[Mm][sip]/ wurde auf jeden String passen, der mit M oder m beginnt, gefolgt von einer Menge, die eines der Zeichen in [sip] |
[^abc] | Nicht a, b oder c | [^rstlne] wurden ubereinstimmen jedes Zeichen, das nicht r, s, t, l, n oder e ist |
[a-zA-Z0-9] | Passt zu jedem Zeichen innerhalb des Bereichs | [an] wurde jedem Zeichen zwischen a und n entsprechen. und, end, blind, können, alle haben Zeichen, die hier vollständig ubereinstimmen |
A|B | A oder B | M|m. wurde jedes Wort oder jede Wortgruppe mit einer L√§nge von mindestens zwei Zeichen finden, die entweder einem M oder einem m plus mindestens einem oder mehreren anderen Zeichen entspricht. |
CAT | Entspricht C, gefolgt von A, gefolgt von T | hello world wurde genau hello world entsprechen |
Metazeichen
Regul√§re Ausdrucke verwenden auch Metazeichen, um ein Muster zu beschreiben. Metazeichen haben eine bestimmte Bedeutung und beschreiben die Form des Musters.
Metazeichen | Beschreibung | Beispiel |
d | Entspricht jeder Ziffer | d wurde 1, 2 oder 3 usw. entsprechen. Abkurzung fur [0-9] |
D | Entspricht jedem nicht-stelligen Zeichen | D wurde A, B, g usw. entsprechen. Abkurzung fur [^0-9] |
s | Entspricht jedem Whitespace Zeichen | s wurden neuen Zeilen, Tabulatoren, Leerzeichen usw. entsprechen. |
S | Entspricht allen nicht -Whitespace-Zeichen | S wurde jedem beliebigen Zeichen außer einem Whitespace-Zeichen entsprechen. |
w | Entspricht jedem Wortzeichen | Ein Wortzeichen, kurz fur [a-zA-Z_0-9] |
W | Entspricht jedem Nicht-Wort-Zeichen | [W] wurde allen Sonderzeichen entsprechen. Abkurzung fur [^w] |
Hinweis: Großbuchstaben-Metazeichen (W, D usw.) entsprechen normalerweise dem Gegenteil von was die Kleinbuchstaben-Metazeichen tun (w, d usw.).
Quantifizierer
Quantifizierer | Beschreibung | Beispiel |
+ | Einer oder mehrere der vorhergehenden Zeichen | d+ wurde zwei oder mehr Ziffern entsprechen |
* | Null oder mehr des vorhergehenden Zeichens | .* wurde jedem Zeichen 0 oder öfter entsprechen Hinweis: Technisch gesehen wurde eine leere Zeichenfolge diese Regex erfullen! |
? | Null oder eine der vorangehendes Zeichen | a?.* wurde mit a, any, hallo, world |
{number} | Entspricht dem vorhergehenden Zeichen genau Anzahl | d{3} entspricht genau drei Ziffern [0-9] |
{num1,num2} | Entspricht dem vorhergehenden Zeichen in einem Zahlenbereich | d{3,5} entspricht 3 bis 5 Ziffern, die [0-9] sind |
Verwenden Sie die Quantoren, Metazeichen und andere Matcher als Bausteine ​​fur Ihre regulären Ausdrucke. Die hier erwähnte Syntax ist in mehreren Sprachen ähnlich, die reguläre Ausdrucke verwenden.