Reguläre Ausdrücke   Tobias Gies – 06.06.2011
Fragen?
Fragen!
Was sind reguläre Ausdrücke?b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b
Was sind reguläre Ausdrücke?●   „Regex“ (Regular Expressions)●   Hier speziell: Perl-kompatible reguläre    Ausdrücke (PCR...
Anwendungsfälle●   Validierung und Filterung von Benutzereingaben●   Durchsuchen von großen Datenmengen●   Trenner zur Auf...
Nicht-Anwendungsfall●   Auszeichnungssprachen! Beispiele:    ●   HTML    ●   XML    ●   JSON
PCRE-Syntax
Terminologie●   Suchmuster („Pattern“)●   Durchsuchte Zeichenkette („Subject“)●   Treffer („Match“)
Ein normaler String        SoftwareMathematisch-technischer   Softwareentwickler
Ein normaler String        SoftwareMathematisch-technischer   Softwareentwickler
Meta-Zeichen[So]f.*twadr{1,4}e
Das Oder-Zeichen     (A|B)C       AC      ABC
Das Oder-Zeichen     (A|B)C       AC      ABC
Das Oder-Zeichen●   Syntax: A|B●   Bedeutung: Entweder das Zeichen direkt vor    oder direkt nach dem senkrechten Strich
Quantoren     Soft{1,2}wareMathematisch-technischer   Softwareentwickler
Quantoren     Soft{1,2}wareMathematisch-technischer   Softtwareentwickler
Quantoren●   Syntax: {min,max}●   Beziehen sich immer auf das vorhergehende    Zeichen / das vorhergehende Subpattern●   H...
Quantoren●   Für oft benötigte Quantoren gibt es Kurzformen●   ? – Gar nicht oder genau einmal – entspricht {0,1}●   + – M...
Der Punkt         .ommaOhne   Punkt und   KommaOhne   Punkt und   SommaOhne   Punkt und   _ommaOhne   Punkt und   0omma   ...
Der Punkt●   Steht für ein beliebiges Zeichen●   Soll nach dem Zeichen „.“ gesucht werden,    muss im Suchmuster ein Backs...
Zeichenklassen       [KP-R]ommaOhne   Punkt   und   KommaOhne   Punkt   und   PommaOhne   Punkt   und   QommaOhne   Punkt ...
Zeichenklassen●   Format: [Zeichen]●   Beschreibt eine Zeichenmenge, aus der das    betroffene Zeichen stammen soll●   Bin...
Zeichenklassen●   Es gibt jede Menge vordefinierte    Zeichenklassen. Beispiele:    ●   d – Ziffern von 0 bis 9 – entspric...
Anker  anaananasbananesilvana
Anker ^anaananasbananesilvana
Anker ana$ananasbananesilvana
Anker●   Legen fest, wo ein Treffer im Subject stehen    muss●   ^ - Nur am Anfang des Subject●   $ - nur am Ende des Subj...
Klammern(.+)@([^.]+).([a-z]{2,})tobias.gies@rwth-aachen.de
Klammern(.+)@([^.]+).([a-z]{2,})tobias.gies@rwth-aachen.de      1: tobias.gies      2: rwth-aachen           3: de
Klammern●   Gruppieren das Suchmuster in Subpatterns●   Auf das, was die Subpatterns jeweils treffen,    kann später einze...
Rückwärtsreferenzen     ([^,]+),1      foo,bar      foo,foo
Rückwärtsreferenzen     ([^,]+),1      foo,bar      foo,foo
Rückwärtsreferenzen●   Rückbezüge auf die Treffer vorhergehender    Subpatterns●   Verweis auf die Subpatterns mit einem  ...
Greediness (Gierigkeit)         <.+>      <Test><123>
Greediness (Gierigkeit)         <.+>      <Test><123>
Greediness (Gierigkeit)         <.+?>      <Test><123>
Greediness (Gierigkeit)         <.+?>      <Test><123>
Greediness (Gierigkeit)●   Reguläre Ausdrücke sind standardmäßig gierig!●   Gierigkeit kann ausgeschaltet werden:    ●   F...
Wie PCRE ausgewertet werden                 (A|B)C?                   (A|B)C?           (A|B)             C?           A|B...
Nutzung in Programmiersprachen●   Regex werden in vielen Programmiersprachen    als Strings eingegeben.●   Backslashes bed...
Nutzung in Java●   Validierung / Filterung / Suche: Klassen aus    dem Paket java.util.regex:    Pattern p = Pattern.compi...
Weiteres Material und Hilfsmittel●   Jeffrey Friedl: Reguläre Ausdrücke (3. Aufl.)    OReilly 2007, ISBN 978-3-89721-720-1...
Fragen?
Danke!
Nächste SlideShare
Wird geladen in …5
×

Reguläre Ausdrücke (MATSE-2010)

1.295 Aufrufe

Veröffentlicht am

This presentation was given at RWTH Aachen University on 2011-06-06 as a social credits project.

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

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.295
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
9
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Reguläre Ausdrücke (MATSE-2010)

  1. 1. Reguläre Ausdrücke Tobias Gies – 06.06.2011
  2. 2. Fragen?
  3. 3. Fragen!
  4. 4. Was sind reguläre Ausdrücke?b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b
  5. 5. Was sind reguläre Ausdrücke?● „Regex“ (Regular Expressions)● Hier speziell: Perl-kompatible reguläre Ausdrücke (PCRE)● „Zeichenkette, die der Beschreibung von Mengen bzw. Untermengen von Zeichenketten mit Hilfe bestimmer syntaktischer Regeln dient“ (Wikipedia: Regulärer Ausdruck, Stand 2011-05-22)
  6. 6. Anwendungsfälle● Validierung und Filterung von Benutzereingaben● Durchsuchen von großen Datenmengen● Trenner zur Aufteilung von Textdaten
  7. 7. Nicht-Anwendungsfall● Auszeichnungssprachen! Beispiele: ● HTML ● XML ● JSON
  8. 8. PCRE-Syntax
  9. 9. Terminologie● Suchmuster („Pattern“)● Durchsuchte Zeichenkette („Subject“)● Treffer („Match“)
  10. 10. Ein normaler String SoftwareMathematisch-technischer Softwareentwickler
  11. 11. Ein normaler String SoftwareMathematisch-technischer Softwareentwickler
  12. 12. Meta-Zeichen[So]f.*twadr{1,4}e
  13. 13. Das Oder-Zeichen (A|B)C AC ABC
  14. 14. Das Oder-Zeichen (A|B)C AC ABC
  15. 15. Das Oder-Zeichen● Syntax: A|B● Bedeutung: Entweder das Zeichen direkt vor oder direkt nach dem senkrechten Strich
  16. 16. Quantoren Soft{1,2}wareMathematisch-technischer Softwareentwickler
  17. 17. Quantoren Soft{1,2}wareMathematisch-technischer Softtwareentwickler
  18. 18. Quantoren● Syntax: {min,max}● Beziehen sich immer auf das vorhergehende Zeichen / das vorhergehende Subpattern● Höchstzahl kann weggelassen werden: {2,} steht für „zwei oder mehr“
  19. 19. Quantoren● Für oft benötigte Quantoren gibt es Kurzformen● ? – Gar nicht oder genau einmal – entspricht {0,1}● + – Mindestens einmal, beliebig oft – entspricht {1,}● * – Gar nicht oder beliebig oft – entspricht {0,}
  20. 20. Der Punkt .ommaOhne Punkt und KommaOhne Punkt und SommaOhne Punkt und _ommaOhne Punkt und 0omma ...
  21. 21. Der Punkt● Steht für ein beliebiges Zeichen● Soll nach dem Zeichen „.“ gesucht werden, muss im Suchmuster ein Backslash vor den Punkt gestellt werden: .
  22. 22. Zeichenklassen [KP-R]ommaOhne Punkt und KommaOhne Punkt und PommaOhne Punkt und QommaOhne Punkt und Romma
  23. 23. Zeichenklassen● Format: [Zeichen]● Beschreibt eine Zeichenmenge, aus der das betroffene Zeichen stammen soll● Bindestrich für Zeichenbereiche: [a-zA-Z]● Zirkumflex negiert die Zeichenklasse: [^0-9] trifft alles, was keine Ziffer ist
  24. 24. Zeichenklassen● Es gibt jede Menge vordefinierte Zeichenklassen. Beispiele: ● d – Ziffern von 0 bis 9 – entspricht [0-9] ● s – Sämtlicher Leerraum (Whitespace)● Großbuchstabe negiert die Zeichenklasse: D trifft alles, was keine Ziffer ist
  25. 25. Anker anaananasbananesilvana
  26. 26. Anker ^anaananasbananesilvana
  27. 27. Anker ana$ananasbananesilvana
  28. 28. Anker● Legen fest, wo ein Treffer im Subject stehen muss● ^ - Nur am Anfang des Subject● $ - nur am Ende des Subject
  29. 29. Klammern(.+)@([^.]+).([a-z]{2,})tobias.gies@rwth-aachen.de
  30. 30. Klammern(.+)@([^.]+).([a-z]{2,})tobias.gies@rwth-aachen.de 1: tobias.gies 2: rwth-aachen 3: de
  31. 31. Klammern● Gruppieren das Suchmuster in Subpatterns● Auf das, was die Subpatterns jeweils treffen, kann später einzeln zugegriffen werden (die Subpatterns werden anhand ihrer Position im Suchmuster durchnummeriert)● Quantoren können auch auf Subpatterns angewandt werden: (Oha)+ trifft OhaOhaOha...● Das gleiche gilt auch für das Oder-Zeichen
  32. 32. Rückwärtsreferenzen ([^,]+),1 foo,bar foo,foo
  33. 33. Rückwärtsreferenzen ([^,]+),1 foo,bar foo,foo
  34. 34. Rückwärtsreferenzen● Rückbezüge auf die Treffer vorhergehender Subpatterns● Verweis auf die Subpatterns mit einem Backslash und ihrer Nummer: 1, 2, etc...
  35. 35. Greediness (Gierigkeit) <.+> <Test><123>
  36. 36. Greediness (Gierigkeit) <.+> <Test><123>
  37. 37. Greediness (Gierigkeit) <.+?> <Test><123>
  38. 38. Greediness (Gierigkeit) <.+?> <Test><123>
  39. 39. Greediness (Gierigkeit)● Reguläre Ausdrücke sind standardmäßig gierig!● Gierigkeit kann ausgeschaltet werden: ● Für einzelne Quantoren durch nachgestelltes ? ● Für den ganzen Ausdruck (je nach Programmiersprache auf unterschiedliche Weise)
  40. 40. Wie PCRE ausgewertet werden (A|B)C? (A|B)C? (A|B) C? A|B C A B
  41. 41. Nutzung in Programmiersprachen● Regex werden in vielen Programmiersprachen als Strings eingegeben.● Backslashes bedürfen daher einiger Aufmerksamkeit● Beispiel: Um nach einem Backslash in einem Subject zu suchen, müssen vier Backslashes im Programmcode geschrieben werden● Davon kommen zwei bei der Regex-Engine an● Diese erkennt das Suchmuster und sucht nach einem Backslash
  42. 42. Nutzung in Java● Validierung / Filterung / Suche: Klassen aus dem Paket java.util.regex: Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches();● Trennung: String.split(String regex)
  43. 43. Weiteres Material und Hilfsmittel● Jeffrey Friedl: Reguläre Ausdrücke (3. Aufl.) OReilly 2007, ISBN 978-3-89721-720-1● Tony Stubblebine: Reguläre Ausdrücke – kurz und gut (2. Aufl.) OReilly 2007, ISBN 978-3-89721-535-1● The Regex Coach: Windows-Programm zum interaktiven experimentieren mit regulären Ausdrücken. http://weitz.de/regex-coach/
  44. 44. Fragen?
  45. 45. Danke!

×