Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Reguläre Ausdrücke (MATSE-2010)

1,388 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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!

×