Einführung in RegEx

974 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Daten & Analysen
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
974
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
17
Aktionen
Geteilt
0
Downloads
10
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Einführung in RegEx

  1. 1. Einführung in RegEx Florian Elbers
  2. 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. 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. 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. 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. 6. Mit welchen Tools führt man ReGex aus? ▪ Textwrangler (Mac) ▪ Sublime Text (Mac) ▪ Notepad++ (Windows) ▪ VIM (Unix/Terminal) ▪ uvm.
  7. 7. Metazeichen ▪ . beliebiges Zeichen ▪ ^ (Zeilen-)Anfang ▪ $ (Zeilen-)Ende ▪ | Alternative ▪ ( … ) Subpattern ▪ [ … ] Zeichenklassen ▪ * + ? { n,m } Quantoren ▪ Aufheben der Meta- Eigenschaften ▪ . ▪ ^ ▪ $ ▪ … Übersicht
  8. 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. 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. 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. 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
  12. 12. Einfache Beispiele .*
  13. 13. Einfache Beispiele .* Jedes beliebige Zeichen
  14. 14. Einfache Beispiele .* Jedes beliebige Zeichen Beliebig oft (auch kein-mal)
  15. 15. Einfache Beispiele – Alternative (F|Ph)antasie Text: „Phantasie kann man auch Fantasie schreiben, aber nicht Fantasy.“
  16. 16. Einfache Beispiele – Alternative (F|Ph)antasie Text: „Phantasie kann man auch Fantasie schreiben, aber nicht Fantasy.“
  17. 17. Einfache Beispiele – Quantoren auto-{0,1}bild auto-?bild Text: autobild auto bild auto-bild
  18. 18. Einfache Beispiele – Quantoren auto-{0,1}bild auto-?bild Text: autobild auto bild auto-bild
  19. 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. 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. 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. 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
  23. 23. Einfache Beispiele – Zeichenklassen d+.d+.d+ Text: 11. Dezember 1980 4.10.1999 04/09/1979 01.02.2013
  24. 24. Einfache Beispiele – Zeichenklassen d+.d+.d+ Text: 11. Dezember 1980 4.10.1999 04/09/1979 01.02.2013
  25. 25. Einfache Beispiele – Postleitzahlen ^[0-9]{5}$ Text: 22767 Hamburg 1234 20251
  26. 26. Einfache Beispiele – Postleitzahlen ^[0-9]{5}$ Text: 22767 Hamburg 1234 20251
  27. 27. Einfache Beispiele – Postleitzahlen ^[0-9]{5}$ Nur komplette Zeile
  28. 28. Einfache Beispiele – Postleitzahlen ^[0-9]{5}$ Nur komplette Zeile Ziffern von 0 bis 9
  29. 29. Einfache Beispiele – Postleitzahlen ^[0-9]{5}$ Nur komplette Zeile Ziffern von 0 bis 9 Genau 5 Stück
  30. 30. 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>
  31. 31. 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>
  32. 32. Fortgeschrittene Beispiele http://www.computerbild.de/sitemap- glossar.xml To Do: Bekommen aller Keywords der Glossarseiten aus den URLs
  33. 33. 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
  34. 34. 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/phpwcm s/index.php?id=4,0,0,1,0,0 ▪ http://regexcrossword.com/

×