Reguläre Ausdrücke & die PCRE- Bibliothek Dominik Siebel PHP Usergroup D / DU / KR Usergrouptreffen am 24.02.2010
Über mich Dominik Siebel  (25) Fachinformatiker für Anwendungsentwicklung
PHP seit 2004
Webdeveloper TWT Interactive GmbH seit Juni 2008
Agenda Definition & Theorie
Einstieg Struktur und Funktionsweise
Metazeichen
Zeichenklassen
Quantoren
Einfache Beispiele Fortgeschritten Greediness
Subpattern
Assertions
Bedingte Ausdrücke Zusatz Regex in PHP Dos und Don'ts (Rekursionen)
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.
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)
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 *
Struktur  Aufbau eines Reges
Struktur  Aufbau eines Reges / [a-z]+ /im
Struktur  Aufbau eines Reges / [a-z]+ / im Delimiter Beliebiges Zeichen
Muss im  Ausdruck  escaped werden
'(' oder ')' in PCRE:  ( [a-z]+ ) im
Struktur  Aufbau eines Reges / [a-z]+ /im Delimiter Beliebiges Zeichen
Muss im Ausdruck escaped werden
'(' oder ')' in PCRE:  ( [a-z]+ )im Ausdruck
Struktur  Aufbau eines Reges / [a-z]+ / im Delimiter Beliebiges Zeichen
Muss im Ausdruck escaped werden
'(' oder ')' in PCRE:  ( [a-z]+ )im Ausdruck
Modifier
Metazeichen . beliebiges Zeichen
^ Anfang
$ Ende
| Alternative
( … ) Subpattern
[ … ] Zeichenklassen
*  +  ?  { n,m } Quantoren
\ Aufheben der Meta- Eigenschaften \.  \^  \$  \\  ...
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
Zeichenklassen  Beispiele Zeichenauswahl [abc] Buchstabe a,b oder c
[a-zA-Z0-9] alphanumerisches Zeichen
[^a-zA-Z0-9] alles außer einem alphanumerischen Zeichen Vordefinierte Zeichenklassen \d Dezimalzahl
\w Wortzeichen
\s Whitespace  (Leerzeichen UND Steuerzeichen \t, \r, \n)
… und mehr: \h, \H, \v, \V
Quantoren Vervielfachen  des  vorangegangenen Ausdrucks
Können auf jeden beliebigen Ausdruck angewendet werden: Zeichen Zeichenklassen
Referenzen Subpattern / [a-z] + /
Quantoren  Typen ? vor. Ausdruck optional   {0,1}
+ vor. Ausdruck mindestens einmal  {1,}
* vor. Ausdruck beliebig oft  {0,}
{ min , max }   { n } vor. Ausdruck exakt  n -mal
{, max } vor. Ausdruck maximal  max -mal
{ min ,} vor. Ausdruck mindestens  min -mal

Reguläre Ausdrucke (PCRE)

Hinweis der Redaktion

  • #6 Chomsky-Hierarchie: - Begriff aus der Theoretischen Informatik - 4 Grammatiktypen (0 bis 3) - Typ einer Grammatik beschreibt die Mindestanforderung um eine eine bestimme formale Sprache zu erzeugen * 3.1 Typ-0-Grammatik (allgemeine Chomsky-Grammatik oder Phrasenstrukturgrammatik) * 3.2 Typ-1-Grammatik (kontextsensitive bzw. monotone Grammatik) * 3.3 Typ-2-Grammatik (kontextfreie Grammatik) * 3.4 Typ-3-Grammatik (rechtslineare bzw. linkslineare Grammatik) Endlicher Automat: - Verhaltensmodell - bestehend aus Zuständen, Zustandsübergängen und Aktionen - endlich wenn die Menge der Zustände die er einnehmen kann endlich ist - 4 Aktionen (Eingangsaktion, Ausgangsaktion, Eingabeaktion, Übergabeaktion) - Visualisierung mittels Zustandsübergangsdiagramm