SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
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 (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)
Anwendungsfälle



●   Validierung und Filterung von Benutzereingaben
●   Durchsuchen von großen Datenmengen
●   Trenner zur Aufteilung von Textdaten
Nicht-Anwendungsfall



●   Auszeichnungssprachen! Beispiele:
    ●   HTML
    ●   XML
    ●   JSON
PCRE-Syntax
Terminologie



●   Suchmuster („Pattern“)
●   Durchsuchte Zeichenkette („Subject“)
●   Treffer („Match“)
Ein normaler String



        Software


Mathematisch-technischer
   Softwareentwickler
Ein normaler String



        Software


Mathematisch-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}ware


Mathematisch-technischer
   Softwareentwickler
Quantoren



     Soft{1,2}ware


Mathematisch-technischer
   Softtwareentwickler
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“
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,}
Der Punkt


         .omma

Ohne   Punkt und   Komma
Ohne   Punkt und   Somma
Ohne   Punkt und   _omma
Ohne   Punkt und   0omma
           ...
Der Punkt



●   Steht für ein beliebiges Zeichen
●   Soll nach dem Zeichen „.“ gesucht werden,
    muss im Suchmuster ein Backslash vor den
    Punkt gestellt werden: .
Zeichenklassen


       [KP-R]omma

Ohne   Punkt   und   Komma
Ohne   Punkt   und   Pomma
Ohne   Punkt   und   Qomma
Ohne   Punkt   und   Romma
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
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
Anker


  ana

ananas

banane

silvana
Anker


 ^ana

ananas

banane

silvana
Anker


 ana$

ananas

banane

silvana
Anker



●   Legen fest, wo ein Treffer im Subject stehen
    muss
●   ^ - Nur am Anfang des Subject
●   $ - nur am Ende des Subject
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 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
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
    Backslash und ihrer Nummer: 1, 2, etc...
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ür einzelne Quantoren durch nachgestelltes ?
    ●   Für den ganzen Ausdruck (je nach
        Programmiersprache auf unterschiedliche Weise)
Wie PCRE ausgewertet werden
                 (A|B)C?

                   (A|B)C?



           (A|B)             C?


           A|B               C


       A            B
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
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)
Weiteres Material und Hilfsmittel
●   Jeffrey Friedl: Reguläre Ausdrücke (3. Aufl.)
    O'Reilly 2007, ISBN 978-3-89721-720-1
●   Tony Stubblebine: Reguläre Ausdrücke – kurz
    und gut (2. Aufl.)
    O'Reilly 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/
Fragen?
Danke!

Weitere ähnliche Inhalte

Andere mochten auch

Anuario ufro 2008
Anuario ufro 2008Anuario ufro 2008
Anuario ufro 2008webbib
 
Umlagefinanzierten iphone angebote
Umlagefinanzierten iphone angeboteUmlagefinanzierten iphone angebote
Umlagefinanzierten iphone angebotelisalee01
 
EL IMPERIO ROMANO. ALBA
EL IMPERIO ROMANO. ALBAEL IMPERIO ROMANO. ALBA
EL IMPERIO ROMANO. ALBABEGOÑA
 
ICT-Ausbildungspartnerschaft für Byangabo
ICT-Ausbildungspartnerschaft für ByangaboICT-Ausbildungspartnerschaft für Byangabo
ICT-Ausbildungspartnerschaft für ByangaboJoachim Graf
 
S.valbuena.ATAPUERCA
S.valbuena.ATAPUERCAS.valbuena.ATAPUERCA
S.valbuena.ATAPUERCABEGOÑA
 
Proyectos
ProyectosProyectos
ProyectosMPPE
 
Ausschreibungsbausteine zum Qualitätsmanagement
Ausschreibungsbausteine zum QualitätsmanagementAusschreibungsbausteine zum Qualitätsmanagement
Ausschreibungsbausteine zum Qualitätsmanagementmapolis AG
 
Secure TYPO Extensions
Secure TYPO ExtensionsSecure TYPO Extensions
Secure TYPO ExtensionsAlex Kellner
 
Diapositiva 1 (jorge r uiz martell)
Diapositiva 1 (jorge r uiz martell)Diapositiva 1 (jorge r uiz martell)
Diapositiva 1 (jorge r uiz martell)mjolengua
 
Contenidos programaticos
Contenidos programaticosContenidos programaticos
Contenidos programaticosisabell
 
Viorel,Nagore y Andrés Burgos S.XIX
Viorel,Nagore y Andrés Burgos S.XIXViorel,Nagore y Andrés Burgos S.XIX
Viorel,Nagore y Andrés Burgos S.XIXBEGOÑA
 
Power point francisco javier moya gonzalez y juan antonio lopez filgaira
Power point francisco javier moya gonzalez y juan antonio lopez filgairaPower point francisco javier moya gonzalez y juan antonio lopez filgaira
Power point francisco javier moya gonzalez y juan antonio lopez filgairamjolengua
 
Procedimiento de la pizza
Procedimiento de la pizzaProcedimiento de la pizza
Procedimiento de la pizzajohanna
 

Andere mochten auch (19)

Presentacion Comparte
Presentacion CompartePresentacion Comparte
Presentacion Comparte
 
Anuario ufro 2008
Anuario ufro 2008Anuario ufro 2008
Anuario ufro 2008
 
SEO for Editors
SEO for EditorsSEO for Editors
SEO for Editors
 
ejercicio 7
ejercicio 7ejercicio 7
ejercicio 7
 
Sky skype
Sky skypeSky skype
Sky skype
 
Umlagefinanzierten iphone angebote
Umlagefinanzierten iphone angeboteUmlagefinanzierten iphone angebote
Umlagefinanzierten iphone angebote
 
salvemos verde
salvemos verdesalvemos verde
salvemos verde
 
EL IMPERIO ROMANO. ALBA
EL IMPERIO ROMANO. ALBAEL IMPERIO ROMANO. ALBA
EL IMPERIO ROMANO. ALBA
 
ICT-Ausbildungspartnerschaft für Byangabo
ICT-Ausbildungspartnerschaft für ByangaboICT-Ausbildungspartnerschaft für Byangabo
ICT-Ausbildungspartnerschaft für Byangabo
 
S.valbuena.ATAPUERCA
S.valbuena.ATAPUERCAS.valbuena.ATAPUERCA
S.valbuena.ATAPUERCA
 
Proyectos
ProyectosProyectos
Proyectos
 
Ausschreibungsbausteine zum Qualitätsmanagement
Ausschreibungsbausteine zum QualitätsmanagementAusschreibungsbausteine zum Qualitätsmanagement
Ausschreibungsbausteine zum Qualitätsmanagement
 
Secure TYPO Extensions
Secure TYPO ExtensionsSecure TYPO Extensions
Secure TYPO Extensions
 
Diapositiva 1 (jorge r uiz martell)
Diapositiva 1 (jorge r uiz martell)Diapositiva 1 (jorge r uiz martell)
Diapositiva 1 (jorge r uiz martell)
 
Contenidos programaticos
Contenidos programaticosContenidos programaticos
Contenidos programaticos
 
Spaun
SpaunSpaun
Spaun
 
Viorel,Nagore y Andrés Burgos S.XIX
Viorel,Nagore y Andrés Burgos S.XIXViorel,Nagore y Andrés Burgos S.XIX
Viorel,Nagore y Andrés Burgos S.XIX
 
Power point francisco javier moya gonzalez y juan antonio lopez filgaira
Power point francisco javier moya gonzalez y juan antonio lopez filgairaPower point francisco javier moya gonzalez y juan antonio lopez filgaira
Power point francisco javier moya gonzalez y juan antonio lopez filgaira
 
Procedimiento de la pizza
Procedimiento de la pizzaProcedimiento de la pizza
Procedimiento de la pizza
 

Reguläre Ausdrücke (MATSE-2010)

  • 1. Reguläre Ausdrücke Tobias Gies – 06.06.2011
  • 4. Was sind reguläre Ausdrücke? b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b
  • 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. Anwendungsfälle ● Validierung und Filterung von Benutzereingaben ● Durchsuchen von großen Datenmengen ● Trenner zur Aufteilung von Textdaten
  • 7. Nicht-Anwendungsfall ● Auszeichnungssprachen! Beispiele: ● HTML ● XML ● JSON
  • 9. Terminologie ● Suchmuster („Pattern“) ● Durchsuchte Zeichenkette („Subject“) ● Treffer („Match“)
  • 10. Ein normaler String Software Mathematisch-technischer Softwareentwickler
  • 11. Ein normaler String Software Mathematisch-technischer Softwareentwickler
  • 13. Das Oder-Zeichen (A|B)C AC ABC
  • 14. Das Oder-Zeichen (A|B)C AC ABC
  • 15. Das Oder-Zeichen ● Syntax: A|B ● Bedeutung: Entweder das Zeichen direkt vor oder direkt nach dem senkrechten Strich
  • 16. Quantoren Soft{1,2}ware Mathematisch-technischer Softwareentwickler
  • 17. Quantoren Soft{1,2}ware Mathematisch-technischer Softtwareentwickler
  • 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. 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. Der Punkt .omma Ohne Punkt und Komma Ohne Punkt und Somma Ohne Punkt und _omma Ohne Punkt und 0omma ...
  • 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. Zeichenklassen [KP-R]omma Ohne Punkt und Komma Ohne Punkt und Pomma Ohne Punkt und Qomma Ohne Punkt und Romma
  • 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. 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
  • 28. Anker ● Legen fest, wo ein Treffer im Subject stehen muss ● ^ - Nur am Anfang des Subject ● $ - nur am Ende des Subject
  • 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. Rückwärtsreferenzen ([^,]+),1 foo,bar foo,foo
  • 33. Rückwärtsreferenzen ([^,]+),1 foo,bar foo,foo
  • 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. Greediness (Gierigkeit) <.+> <Test><123>
  • 36. Greediness (Gierigkeit) <.+> <Test><123>
  • 37. Greediness (Gierigkeit) <.+?> <Test><123>
  • 38. Greediness (Gierigkeit) <.+?> <Test><123>
  • 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. Wie PCRE ausgewertet werden (A|B)C? (A|B)C? (A|B) C? A|B C A B
  • 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. 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. Weiteres Material und Hilfsmittel ● Jeffrey Friedl: Reguläre Ausdrücke (3. Aufl.) O'Reilly 2007, ISBN 978-3-89721-720-1 ● Tony Stubblebine: Reguläre Ausdrücke – kurz und gut (2. Aufl.) O'Reilly 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/