4 Definition & Theorie In der Informatik ist ein regulärer Ausdruck (RegExp oder Regex) eine Zeichenkette, die der Beschreibung von Mengen und Untermengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.
5 Definition & Theorie Beschreiben eine Familie von formalen Sprachen Formale Grammatik vom Typ3 der Chomsky- Hierarchie Zu jedem Regex existiert ein endlicher Automat 3 Operationen Alternative (Boolean „or“) Verkettung (Grouping) Wiederholung (Quantification)
6 Funktionsweise Zeichenweise Verarbeitung immer von links nach rechts Alle Metazeichen / Zeichenklassen werden als einfaches Zeichen gewertet „Dumm und gierig“ Bestehen aus Zeichen des zugrunde liegenden Alphabets und definierten Metazeichen*
10 Struktur Aufbau eines Reges /[a-z]+/im Delimiter Beliebiges Zeichen Muss im Ausdruck escaped werden '(' oder ')' in PCRE: ([a-z]+)im Ausdruck
11 Struktur Aufbau eines Reges /[a-z]+/im Delimiter Beliebiges Zeichen Muss im Ausdruck escaped werden '(' oder ')' in PCRE: ([a-z]+)im Ausdruck Modifier
13 Zeichenklassen Abgrenzung Logische Gruppierung von Zeichen [0-9] Zeichenauswahl repräsentiert ein Zeichen der Auswahl Kontextsensitiv \d Zeichenklasse Können durch Zeichenauswahl abgebildet werden Negierung durch Großschreibung: \D
15 Quantoren Vervielfachen des vorangegangenen Ausdrucks Können auf jeden beliebigen Ausdruck angewendet werden: Zeichen Zeichenklassen Referenzen Subpattern /[a-z]+/
32 Greediness Q: Auf wie viele Zeichen matcht der Reguläre Ausdruck für die Zeichenkette foobar Alle? Keins? A: Abhängig von der „Gierigkeit“ (Greediness) der Regex- Engine Greedy (default) Ungreedy .*
33 Greediness Umschalten Global über Modifier U /.*/U Gilt für den gesamten Regulären Ausdruck Lokal über Quantor gefolgt von ? /.*?/ /[0-9]+?/ Gilt für den jeweils vorangestellten Teilausdruck /.*?/U Kombination möglich
46 Assertions negative backward Negative look-behind assertion Definiert durch ?<! „Finde verein wenn Sport nicht vorausgegangen ist“ /(?<!Sport)verein/
47 Bedingte Ausdrücke „Wenn öffnendes a-Tag vorhanden muss das schließende auch gematcht werden“ Vergleichbar mit dem ternären Operator in PHP: echo ( empty($aList) ? 'Liste leer' : '' ); Definiert durch ?(if) then | else Nachfolgender Ausdruck wenn Bedingung erfüllt /(<a\s+[^>]+\s*)?<img\s+[^>]+>(?(\1)\s*</a>)/
60 Reguläre Ausdrücke in PHP Escaping Alle Metazeichen ! ? . + * () [] {} Delimiter (Außer bei Verwendung von () ) Verwendung von Single Quotes ratsam /[\\\\\\[\\]]*/ Auch wenn nicht nötig: Backslash escapen
61 Dos und Don'ts Do: Validierung von begrenztem input Do: Tokenizing von Zeichenketten Dont: Parsen mit Regulären Ausdrücken Schwer wartbar Fehlersuche fast unmöglich