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
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
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
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...
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)
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/