|
Was für Ausdrücke ... Regular Expressions
Reguläre Ausdrücke
Reguläre Ausdrücke
- Eingeführt 1956 von S. C. Kleene
- Werden dann verwendet, wenn man die Form eines Strings beschreiben will - sie beschreiben Klassen von Strings: einfacher, die Zahlen von 0 bis unendlich durch eine Beschreibung zu definieren, also durch Aufzählung der vorkommenden Elemente, anstatt jede Zahl einzeln aufzuzählen
- Reguläre Ausdrücke sind also dazu da, diese Klassen zu beschreiben
- Pass auf Zeichenkette, wenn diese in der von der Regulären Ausnahme umschriebenen Klasse enthalten ist
- Verwendung: auswählen eines bestimmten Abschnittes aus einem String
- bestehen aus null oder mehreren Alternativen, getrennt durch Hochkommata, |, ?, "
- passt, wenn eine Alternative passt
Alternativen
- bestehen aus null oder mehreren Teilen
- pass, wenn die Teile in ihrer Reihenfolge passen
Teile
- sind atomare Elemente mit einem eventuellen Iterator (*,+) oder einer Option (?)
Atomare Teile
- sind geklammerte reguläre Ausdrücke
- in "[" und "]" geklammerte Teilbereiche , ".", "^", "$" oder Einzelzeichen (eventuell mit "\" vorher)
- Wenn ein regulärer Ausdruck auf mehrere Stellen im Text passt, wird immer die erste Stelle genutzt
- In Alternativen hat der linke Zweig Vorrang vor dem rechten
- In Iterationen oder Optionen hat der längste Teil Vorrang
- Sequenzen von Teilausdrücken werden von links nach rechts ausgewertet
- Praxis: in Hochkommata oder "", wenn Leerzeichen oder Zeichen beinhaltend, die von Shell ersetzt werden:
- Strings
- Metazeichen (Sonderzeichen):
- ^ - Zeilenbeginn
- $ - Zeilenende
- . - beliebiges Zeichen
- \ - Aufheben der Sonderbedeutung des nachfolgenden Zeichens
- ? - Muster ist vorhanden oder nicht
- * - beliebig viele Aneinanderreihungen eines Musters (auch Null)
- + - beliebig viele Aneinanderreihungen eines Musters (mindestens eine)
- < - Wortanfang
- > - Wortende
- Character Classes (in Hochkommata):
- [aX] - Zeilen, die mindestens eines der Zeichen in der Klammer beinhalten
- [A-Z] - Zeilen, die mindestens Großbuchstaben beinhalten, für Kleinbuchstaben analog
- [^A-Z] - Zeilen, die keinen Großbuchstaben beinhalteen - ^ ist Verneinung
- ^[A-Z]*$ - Zeilen, die leer sind oder nur Großbuchstaben beinhalten - * ist Zeichen für Wiederholung, auch kein Auftreten ist Wiederholung
- ^[A-Z]+$ - Zeilen, die nur Großbuchstaben beinhalten - + ist Zeichen für minimal eine Wiederholung
- \{2,5\} 2 bis 5 Wiederholungen, \{n\} n Wiederholungen
- muster1|muster2 eines von beiden Mustern
- \( \) - Zusammenfassen mehrerer Muster zu einem
|