Einführung zum Erlernen regulärer Ausdrücke, (englisch regular expression, Abkürzung RegExp oder Regex) welche in der theoretischen Informatik Zeichenketten bezeichnen, die der Beschreibung von Mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.
2. Definition und Nutzen
▪ Reguläre Ausdrücke (Englisch: regular
expressions, abgekürzt RegExp oder
Regex) bezeichnen genau definierte
Suchmuster, mit deren Hilfe sich in einer
Zeichenkette bestimmte Inhalte suchen
und bei Bedarf ersetzen lassen
▪ z. B.: „Suche nach allen Wörtern, die mit
einem großen D anfangen und mehr als
drei Buchstaben enthalten“
▪ => RegEx ersparen viel Arbeit und Zeit
▪ => RegEx erweitern den eigenen
Handlungsspielraum
3. Wann brauchen wir RegEx?
▪ Validierung und Filterung von Benutzereingaben, z. B. Spamfilter
▪ Durchsuchen von großen Datenmengen
▪ Aufteilung von Textdaten
▪ Konkretisieren von Abfragen, z. B. in Google Analytics
▪ uvm.
4. Was können Muster sein?
▪ Deutsche Postleitzahlen: D-27321
▪ D gefolgt von Bindestrich/Leerzeichen
▪ gefolgt von 5 Ziffern
▪ ISBN-Nummer: 978-3-442-54631-2
▪ 3 Ziffern (entweder 978 oder 979)
▪ gefolgt von einem Bindestrich
▪ gefolgt von 1 bis 5 Ziffern …
▪ Emailadresse: jemand@irgendwo.de
▪ Zeichenfolge gefolgt von @
▪ gefolgt von Zeichenfolge
▪ gefolgt von Punkt
▪ gefolgt von Zeichenfolge
5. Wie sieht so eine RegEx aus?
▪ copy *.doc c:temp
▪ /D{4}d{4}.tif/gi
▪ ^[+-]?(d+.d+|d+.|.d+|d+)([eE]
[+-]?d+)?$
▪ ^[a-zA-Z0-9][w.-]*@(?:[a-zA-Z0-9]
[a-zA-Z0-9_-]+.)+[A-Z,a-z]{2,5}$
6. Mit welchen Tools führt man ReGex aus?
▪ Textwrangler (Mac)
▪ Sublime Text (Mac)
▪ Notepad++ (Windows)
▪ VIM (Unix/Terminal)
▪ uvm.
8. Zeichenklassen
▪ Eckige Klammern finden in regulären Ausdrücken
Verwendung um eine Zeichenauswahl festzulegen
▪ [abc] Buchstabe a,b oder c
▪ [a-zA-Z0-9] alphanumerisches Zeichen
▪ [^a-zA-Z0-9] alles außer alphanumerischem Zeichen
▪ Vordefinierte Zeichenklassen
▪ d Zahl
▪ D keine Zahl
▪ w Wort
▪ W kein Wort
▪ s Whitespace
▪ s kein Whitespace
▪ t Tabulator
▪ r Zeilenumbruch
Typen
9. Quantoren
▪ Quantoren bzw. geschweifte Klammern dienen in
regulären Ausdrücken dazu eine Anzahl
festzulegen, also wie oft ein bestimmtes Zeichen
oder ein erlaubter Zeichenbereich vorkommen darf,
oder muss
▪ ? vorang. Ausdruck optional {0,1}
▪ + vorang. Ausdruck mindestens einmal {1,}
▪ * vorang. Ausdruck beliebig oft {0,}
▪ { min , max }
▪ { n } vor. Ausdruck exakt n-mal
▪ {, max } vor. Ausdruck maximal max-mal
▪ { min ,} vor. Ausdruck mindestens min-mal
Typen
10. Einstiegsbeispiel
▪ ^D[a-z]*i$
▪ Dieser reguläre Ausdruck ist wie folgt zu verstehen:
▪ ^ steht für den Beginn des Strings, d. h. der String muss mit einem großen D beginnen (keine Zeichen davor)
▪ $ steht für das Ende des Strings, es dürfen also keine Zeichen hinter dem kleinen i kommen.
▪ Innerhalb der eckigen Klammern wird eine Zeichengruppe angegeben, in diesem Beispiel sind alle Zeichen von a bis z (in
Kleinbuchstaben) erlaubt
▪ Das Sternchen (*) steht für beliebiges Vorkommen des zuvor definierten Wertes. In unserem Beispiel darf also nach dem
großen D beliebig oft ein Zeichen aus der Menge a bis z vorkommen.
▪ Welche Eingaben sind damit erlaubt?
▪ DelphiXE - Nein, weil der String mit einem kleinen i enden muss
▪ Del-phi - Nein, weil zwischen D und i nur Kleinbuchstaben stehen dürfen und keine Bindestriche
▪ Delphi - korrekt
11. Weitere Einstiegsbeispiele
▪ Leerzeilen löschen:
▪ r+ durch r ersetzen
▪ Datum umformatieren:
▪ 01.02.1900 zu 1900-02-01
▪ (d{2}).(d{2}).(d{4}) durch 3-2-1 ersetzen
▪ Bestimmte Dateien aus der Liste löschen:
▪ *.(jpg|jpeg|css|js)
▪ Liste von AuBi-Artikel-URLs => ID rausfiltern
▪ http://www.autobild.de/artikel/fahrbericht-mercedes-benz-s-320-cdi-53622.html
▪ ^(.*?)-(d+).html ersetzen mit 2
19. Einfache Beispiele – Zeichenklassen
[KP-R]omma
Text:
Ohne Punkt und Komma
Ohne Punkt und Pomma
Ohne Punkt und Qomma
Ohne Punkt und Romma
Ohne Punkt und Somma
20. Einfache Beispiele – Zeichenklassen
[KP-R]omma
Text:
Ohne Punkt und Komma
Ohne Punkt und Pomma
Ohne Punkt und Qomma
Ohne Punkt und Romma
Ohne Punkt und Somma
21. Einfache Beispiele – Negation mit Zirkumflex
[^K]omma
Text:
Ohne Punkt und Komma
Ohne Punkt und Pomma
Ohne Punkt und Qomma
Ohne Punkt und Romma
Ohne Punkt und Somma
22. Einfache Beispiele – Negation mit Zirkumflex
[^K]omma
Text:
Ohne Punkt und Komma
Ohne Punkt und Pomma
Ohne Punkt und Qomma
Ohne Punkt und Romma
Ohne Punkt und Somma