RegEx-SchulungFlorian Elbers
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
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.
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: [email protected]
▪ Zeichenfolge gefolgt von @
▪ gefolgt von Zeichenfolge
▪ gefolgt von Punkt
▪ gefolgt von Zeichenfolge
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}$
Mit welchen Tools führt man ReGex aus?
▪ Textwrangler (Mac)
▪ Sublime Text (Mac)
▪ Notepad++ (Windows)
▪ VIM (Unix/Terminal)
▪ uvm.
Metazeichen
▪ . beliebiges Zeichen
▪ ^ (Zeilen-)Anfang
▪ $ (Zeilen-)Ende
▪ | Alternative
▪ ( … ) Subpattern
▪ [ … ] Zeichenklassen
▪ * + ? { n,m } Quantoren
▪ \ Aufheben der Meta- Eigenschaften
▪ \.
▪ \^
▪ \$
▪ …
Übersicht
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
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
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
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
Einfache Beispiele
.*
Einfache Beispiele
.*
Jedes beliebige Zeichen
Einfache Beispiele
.*
Jedes beliebige Zeichen
Beliebig oft (auch kein-mal)
Einfache Beispiele – Alternative
(F|Ph)antasie
Text:
„Phantasie kann man auch Fantasie schreiben, aber nicht Fantasy.“
Einfache Beispiele – Alternative
(F|Ph)antasie
Text:
„Phantasie kann man auch Fantasie schreiben, aber nicht Fantasy.“
Einfache Beispiele – Quantoren
auto-{0,1}bild
auto-?bild
Text:
autobild
auto bild
auto-bild
Einfache Beispiele – Quantoren
auto-{0,1}bild
auto-?bild
Text:
autobild
auto bild
auto-bild
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
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
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
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
Einfache Beispiele – Zeichenklassen
\d+\.\d+\.\d+
Text:
11. Dezember 1980
4.10.1999
04/09/1979
01.02.2013
Einfache Beispiele – Zeichenklassen
\d+\.\d+\.\d+
Text:
11. Dezember 1980
4.10.1999
04/09/1979
01.02.2013
Einfache Beispiele – Postleitzahlen
^[0-9]{5}$
Text:
22767 Hamburg
1234
20251
Einfache Beispiele – Postleitzahlen
^[0-9]{5}$
Text:
22767 Hamburg
1234
20251
Einfache Beispiele – Postleitzahlen
^[0-9]{5}$
Nur komplette Zeile
Einfache Beispiele – Postleitzahlen
^[0-9]{5}$
Nur komplette Zeile
Ziffern von 0 bis 9
Einfache Beispiele – Postleitzahlen
^[0-9]{5}$
Nur komplette Zeile
Ziffern von 0 bis 9
Genau 5 Stück
Einfache Beispiele – HTML-Tags
<title>(.*?)</title>
Text:
<title>COMPUTER BILD: Tests, Downloads, Ratgeber & Kurse</title>
<title class=„title“>COMPUTER BILD: Tests, Downloads, Ratgeber & Kurse</title>
<title><b>COMPUTER BILD: Tests, Downloads, Ratgeber & Kurse</b></title>
Einfache Beispiele – HTML-Tags
<title>(.*?)</title>
Text:
<title>COMPUTER BILD: Tests, Downloads, Ratgeber & Kurse</title>
<title class=„title“>COMPUTER BILD: Tests, Downloads, Ratgeber & Kurse</title>
<title><b>COMPUTER BILD: Tests, Downloads, Ratgeber & Kurse</b></title>
Fortgeschrittene Beispiele
http://www.computerbild.de/sitemap-glossar.xml
To Do:
Bekommen aller Keywords der Glossarseiten aus den URLs
Fortgeschrittene Beispiele
http://www.computerbild.de/sitemap-glossar.xml
To Do:
Bekommen aller Keywords der Glossarseiten aus den URLs
^http://www.computerbild.de/glossar/(.*?)-\d+\.html ersetzen durch \1
Wer mehr über RegEx wissen möchte
▪ http://www.mediaevent.de/javascript/Javascript-Regulaere-Ausdruecke-1.html
▪ http://www.danielfett.de/internet-und-opensource,artikel,regulaere-ausdruecke
▪ http://www.regenechsen.de/phpwcms/index.php?id=4,0,0,1,0,0
▪ http://regexcrossword.com/
Top Related