Regulärer Ausdruck: Was er bedeutet

Was ist ein regulärer Ausdruck?

Regex, oder Reguläre Ausdrücke, sind ein Musterabgleichs-Markup, das Programmierer verwenden, um nach bestimmten Mustern im Text zu suchen. Reguläre Ausdrücke können nach fast allem suchen, je nachdem, wie Sie sie strukturieren. Sie werden überall von Programmierern verwendet, weil sie von unschätzbarem Wert sind, um Computern dabei zu helfen, Daten schnell zu sortieren und Unsinn herauszufiltern, der sonst Fehler verursachen könnte.

Reguläre Ausdrücke sehen in der Regel beängstigend aus, insbesondere für Nicht-Programmierer. Schau dir das einfach an:

[a-zA-Z0-9_.+-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_.-]+

Realistisch gesehen ist es eigentlich nicht so schlimm; das entspricht E-Mail-Adressen. Wie Sie sehen werden, können Ausdrücke in einzelne Zeichen zerlegt werden, die alle dem Programm mitteilen, wonach es suchen soll.

Reguläre Ausdrücke sind fast universell. Der gleiche General Syntax gilt für alle Sprachen mit nur geringen Abweichungen hier und da. Dieses Handbuch enthält Beispiele aus Python und JavaScript sowie einfache alte Regex. Wenn Sie mit einer anderen Sprache arbeiten, machen Sie sich keine Sorgen. Fast alles trifft auch auf die Sprache Ihrer Wahl zu.

instagram viewer

Regex-Grundlagen

Technisch gesehen gibt es nicht viele Dinge, die nicht als reguläre Ausdrücke angesehen werden könnten, da wörtliche Textzeichenfolgen wirklich einfach sind. Wenn Sie 'abcde' als regulären Ausdruck verwenden, würde die Programmiersprache nach genau diesem String suchen.

Das erste dynamischere übereinstimmende Zeichen, das Sie sich ansehen sollten, ist das '.' Charakter. Das Punktzeichen ist in diesem Zusammenhang ein Platzhalter. Wenn Sie damit suchen, gibt Ihr Programm jedes gefundene Zeichen als Übereinstimmung zurück.

Was ist also, wenn Sie nach einem buchstäblichen Punkt suchen möchten? Das ist auch nicht schwer. Wenn Sie einen Literalpunkt verwenden möchten, fügen Sie davor einen umgekehrten Schrägstrich hinzu, etwa so: '\.'

Backslash-Zeichen

Der Backslash spielt hier jedoch viel mehr Rollen. Die meisten der wichtigsten Regex-Zeichen enthalten einen umgekehrten Schrägstrich.

Ziffern für reguläre Ausdrücke
Finden von Ziffern mit Regex in Python.

Schauen Sie sich einige Beispiele an:

  • \d: Ziffern von 0 bis 9
  • \w: "Wortzeichen" Buchstaben, Ziffern und Unterstrich
  • \s: Leerzeichen, einschließlich Tabulatoren, Zeilenumbrüche und normale Leerzeichen

Wenn Sie stattdessen den Großbuchstaben verwenden, erhalten Sie das Gegenteil. '\D' gibt Ihnen zum Beispiel alles außer Ziffern.

Klassen

Das Backslash-Zeichen sind gut, aber sie sind immer noch irgendwie starr. Im Allgemeinen möchten Sie entweder Buchstaben, Zahlen oder einige Sonderzeichen zuordnen.

Klassen für reguläre Ausdrücke
Verwenden von Regex-Klassen zum Suchen von Buchstaben in Python.

Setzen Sie die Zeichen, die Sie vergleichen möchten, in ein Paar eckiger Klammern '[]', und Ihr Programm wird mit jedem von ihnen übereinstimmen. Dies wird als Regex-Klasse bezeichnet.

[abcd1234]

Das obige Beispiel ist immer noch ineffizient. Stattdessen können Sie einen Bindestrich verwenden, um einen Bereich anzugeben; zum Beispiel alle Kleinbuchstaben:

[a-z]

Sie können auch Bereiche auflisten. Der folgende Ausdruck stimmt mit allen Buchstaben und Ziffern überein:

[a-zA-Z0-9]

Wenn Sie den Bindestrich in Ihren Zeichensatz aufnehmen möchten, heften Sie ihn am Ende an, damit er nicht ausgewertet wird. Es funktioniert auch mit anderen Sonderzeichen.

[a-zA-Z0-9_.+-]

Wie bei den Backslash-Zeichen können Sie auch hier das inverse Ergebnis erhalten. Platzieren Sie ein '^' am Anfang Ihrer Klasse, um sie von Ihren Ergebnissen auszuschließen. Dadurch werden Ziffern und mehrere Sonderzeichen von den Ergebnissen ausgeschlossen:

[^0-9_+.-]

Gruppen

Gruppen verwenden eine Reihe von Klammern, um Ihren Ausdruck zu unterteilen. Sie gruppieren Daten, sodass Ihr Programm diese gezielt verwenden und verwenden kann. Wenn ein Programm das ' http://' von einer Webadresse aus verwendet es Regex-Gruppen, um dies zu erreichen. Die Regex lässt sie auf bestimmte Kriterien abzielen, und die Gruppen lassen sie Abschnitte voneinander trennen.

Reguläre Ausdrucksgruppen
Regex-Gruppen-Hilfe beim Suchen von URLs in JavaScript.

Bei Gruppen können Sie auch zwischen dem einen oder anderen Muster wählen. Sie verwenden ein einzelnes '|' als "oder" im Ausdruck fungieren. Der nachfolgende Ausdruck stimmt mit einem der folgenden Werte überein: .com, .org, .net, .edu oder .gov.

\.(com|org|net|edu|gov)

Quantifizierer

Quantifizierer sind genau das, wonach sie klingen. Sie geben dem Ausdruck die Menge eines gesuchten Zeichens an. Dies sind die verfügbaren Quantoren:

  • *: Null oder mehr
  • +: Eine oder mehrere
  • ?: Null oder Eins
  • {3}: Der Betrag in den Klammern

Platzieren Sie einen dieser Quantoren am Ende des Zeichens oder der Klasse, deren Anzahl Sie angeben möchten. In diesem Beispiel wird nach siebenstelligen Standardtelefonnummern gesucht:

\d{3}[.*-]\d{3}[.*-]\d{4}

Anker und Grenzen

Mit regulären Ausdrücken können Sie anhand ihrer Position innerhalb einer Textfolge oder um ein Wort herum nach Mustern suchen.

Anker für reguläre Ausdrücke
Regex-Anker verwenden die Positionierung, um eine Übereinstimmung in JavaScript zu finden.

Dies sind Ihre primären Optionen:

  • ^: Der Anfang einer Zeichenfolge
  • $: Das Ende einer Zeichenfolge
  • \b: Wortgrenze (der Anfang oder das Ende eines Wortes)

Wenn Sie nur Zeichenfolgen suchen möchten, die mit einem Buchstaben beginnen, können Sie Folgendes versuchen:

^[a-zA-Z]

Angenommen, Sie möchten nur das Wort "es" finden, nicht Wörter, die die Buchstaben I und T enthalten; hier würden Sie Wortgrenzen verwenden.

\b(i|I)t\b

Abschließende Gedanken

Reguläre Ausdrücke können Ihnen beim Programmieren eine Menge Kopfschmerzen ersparen. Stellen Sie sich vor, Sie versuchen, Logik zu schreiben, um eines der Beispiele in diesem Artikel auszuführen. Es wäre ein schreckliches Durcheinander. Sobald Sie sich mit ihnen vertraut gemacht haben, werden Sie wahrscheinlich die Leistungsfähigkeit und Flexibilität von Regex wirklich genießen.