Download - Reguläre Ausdrucke (PCRE)
![Page 1: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/1.jpg)
Reguläre Ausdrücke& die PCRE- Bibliothek
Dominik SiebelPHP Usergroup D / DU / KR
Usergrouptreffen am 24.02.2010
![Page 2: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/2.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 2
Über mich
Dominik Siebel (25)
Fachinformatiker für Anwendungsentwicklung
PHP seit 2004
Webdeveloper TWT Interactive GmbH seit Juni 2008
![Page 3: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/3.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 3
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)
![Page 4: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/4.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 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.
![Page 5: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/5.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 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)
![Page 6: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/6.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 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*
![Page 7: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/7.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 7
Struktur Aufbau eines Reges
![Page 8: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/8.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 8
Struktur Aufbau eines Reges
/[a-z]+/im
![Page 9: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/9.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 9
Struktur Aufbau eines Reges
/[a-z]+/imDelimiter
Beliebiges Zeichen
Muss im Ausdruck escaped werden
'(' oder ')' in PCRE: ([a-z]+)im
![Page 10: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/10.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 10
Struktur Aufbau eines Reges
/[a-z]+/imDelimiter
Beliebiges Zeichen
Muss im Ausdruck escaped werden
'(' oder ')' in PCRE: ([a-z]+)im
Ausdruck
![Page 11: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/11.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 11
Struktur Aufbau eines Reges
/[a-z]+/imDelimiter
Beliebiges Zeichen
Muss im Ausdruck escaped werden
'(' oder ')' in PCRE: ([a-z]+)im
Ausdruck
Modifier
![Page 12: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/12.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 12
Metazeichen
. beliebiges Zeichen
^ Anfang
$ Ende
| Alternative
(…) Subpattern
[…] Zeichenklassen
* + ? {n,m} Quantoren
\ Aufheben der Meta- Eigenschaften
\. \^ \$ \\ ...
![Page 13: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/13.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 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
![Page 14: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/14.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 14
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
![Page 15: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/15.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 15
Quantoren
Vervielfachen des vorangegangenen Ausdrucks
Können auf jeden beliebigen Ausdruck angewendet werden:
Zeichen Zeichenklassen
Referenzen Subpattern
/[a-z]+/
![Page 16: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/16.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 16
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
![Page 17: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/17.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 17
Einfache Beispiele
![Page 18: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/18.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 18
Einfache Beispiele
/.*/
![Page 19: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/19.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 19
Einfache Beispiele
Jedes beliebige Zeichen beliebig oft (auch kein-mal)
/.*/
![Page 20: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/20.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 20
Einfache Beispiele
Jedes beliebige Zeichen beliebig oft (auch kein-mal)
/.*/
![Page 21: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/21.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 21
Einfache Beispiele
/[a-z]+/
![Page 22: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/22.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 22
Einfache Beispiele
Kleinbuchstaben von a bis z
/[a-z]+/
![Page 23: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/23.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 23
Einfache Beispiele
/[a-z]+/
Kleinbuchstaben von a bis z
Ein- bis n-mal
![Page 24: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/24.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 24
Einfache Beispiele
/[a-z]+/i
![Page 25: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/25.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 25
Einfache Beispiele
Alle Buchstaben von a bis z
/[a-z]+/i
![Page 26: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/26.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 26
Einfache Beispiele
Alle Buchstaben von a bis z
ein- bis n-mal
/[a-z]+/i
![Page 27: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/27.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 27
Einfache Beispiele
/foo(\s*,\s*foo)*/
![Page 28: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/28.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 28
Einfache Beispiele
/foo(\s*,\s*foo)*/
Zeichenkette foo
![Page 29: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/29.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 29
Einfache Beispiele
Zeichenkette foo
0 bis n kommaseparierte Zeichenketten foo
/foo(\s*,\s*foo)*/
![Page 30: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/30.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 30
Einfache Beispiele
Zeichenkette foo
0 bis n kommaseparierte Zeichenketten foo
/foo(\s*,\s*foo)*/
![Page 31: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/31.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 31
Einfache Beispiele
Zeichenkette foo
0 bis n kommaseparierte Zeichenketten foo
Inklusive umgebender Whitespaces
/foo(\s*,\s*foo)*/
![Page 32: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/32.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 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
.*
![Page 33: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/33.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 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
![Page 34: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/34.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 34
Greediness
Input: foobar
Match: alle Zeichen
/.*/
![Page 35: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/35.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 35
Greediness
Input: foobar
Match: kein Zeichen
/.*/U
/.*?/
![Page 36: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/36.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 36
Subpattern
![Page 37: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/37.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 37
Subpattern Verwendung
Informationsextraktion
Nummeriert nach öffnenden Klammern:
foobar
bar
bar
/(foo(bar))(baz)*/
![Page 38: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/38.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 38
Subpattern Verwendung
Vervielfachung von Teilausdrücken durch Quantoren
/(foobar)*/
![Page 39: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/39.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 39
Subpattern Verwendung
Rückwärtsreferenzierung
Wiederverwendung von Subpattern
Nummeriert nach öffnender Klammer
/(foo|bar)something(\1)*/
![Page 40: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/40.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 40
Subpattern Gruppierung
Gruppierung ohne die Erzeugung eines Subpattern durch ?:
Result:
foo | bar
foo | bar
/(foo|bar)(?:baz)?(\1)*/
![Page 41: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/41.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 41
Subpattern Benennung
Eigenart der PCRE
Mit ?P<key> lassen sich Subpattern zusätzlich assoziativ ablegen:
Input: Dominik Siebel
0 => 'Dominik Siebel'
'firstname' => 'Dominik'
1 => 'Dominik'
/(?P<firstname>[A-Za-z]+) (?P<lastname>[A-Za-z]+)/
![Page 42: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/42.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 42
Assertions Definition
Annahme / Behauptung
Seit Perl 5
Ermöglichen kontextsensitive Bedingungen
Positive Assertions
Negative Assertions
Forward Assertions
Backward Assertions
![Page 43: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/43.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 43
Assertions positive forward
Positive look-ahead assertion
Definiert durch ?=
„Finde whitespace wenn gefolgt von EUR“
/\s(?=EUR)/
![Page 44: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/44.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 44
Assertions negative forward
Negative look-ahead assertion
Definiert durch ?!
„Finde Sport wenn nicht gefolgt von verein“
/Sport(?!verein)/
![Page 45: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/45.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 45
Assertions positive backward
Positive look-behind assertion
Definiert durch ?<=
„Finde Zahlen vorangestelltem EUR“
/(?<=EUR) \d+/
![Page 46: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/46.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 46
Assertions negative backward
Negative look-behind assertion
Definiert durch ?<!
„Finde verein wenn Sport nicht vorausgegangen ist“
/(?<!Sport)verein/
![Page 47: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/47.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 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>)/
![Page 48: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/48.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 48
Bedingte Ausdrücke
<a>
/(<a\s+[^>]+\s*)?<img\s+[^>]+>(?(\1)\s*</a>)/
![Page 49: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/49.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 49
Bedingte Ausdrücke
<a>
<img>
/(<a\s+[^>]+\s*)?<img\s+[^>]+>(?(\1)\s*</a>)/
![Page 50: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/50.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 50
Bedingte Ausdrücke
<a>
<img />
Bedingung: <a> muss vorhanden sein
„Wenn <a> - Tag gefunden, dann </a> suchen“
/(<a\s+[^>]+\s*)?<img\s+[^>]+>(?(\1)\s*</a>)/
![Page 51: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/51.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 51
Bedingte Ausdrücke
<a>
<img />
Bedingung: <a> muss vorhanden sein
„Wenn <a> - Tag gefunden, dann </a> suchen“
/(<a\s+[^>]+\s*)?<img\s+[^>]+>(?(\1)\s*</a>)/
![Page 52: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/52.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 52
Reguläre Ausdrücke in PHP preg_*
preg_match(RegExp, Subject, [matches])
Subject einfach gegen RegExp prüfen
Optional: matches
Liefert 0 oder 1 (Anzahl der Treffer)
preg_replace(RegExp, Replacement, Subject)
Alle Treffer von RegExp in Subject durch Replacement ersetzen
Optional: Limit, Anzahl der Ersetzungen
Liefert Subject nach Ersetzungen
![Page 53: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/53.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 53
Reguläre Ausdrücke in PHP preg_*
preg_split(RegExp, Subject)
Subject anhand von RegExp aufteilen
Optional: Limit, Flags*
Liefert array der Teile
![Page 54: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/54.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 54
Reguläre Ausdrücke in PHP preg_*
preg_split(RegExp, Subject)
Subject anhand von RegExp aufteilen
Optional: Limit, Flags*
Liefert array der Teile
Flags
PREG_SPLIT_NO_EMPTY Leere Elemente werden ignoriert
...
![Page 55: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/55.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 55
Reguläre Ausdrücke in PHP preg_*
preg_split(RegExp, Subject)
Subject anhand von RegExp aufteilen
Optional: Limit, Flags*
Liefert array der Teile
preg_quote(Subject, [Delimiter])
Metazeichen in Subject escapen
Optional: Delimiter
Liefert Subject breinigt
![Page 56: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/56.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 56
Reguläre Ausdrücke in PHP preg_*
preg_match_all(RegExp, Subject, [Matches], [Flags])
Subject einfach gegen RegExp prüfen
Optional: Matches, Flags*, Offset
Liefert 0 oder Anzahl der Treffer
![Page 57: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/57.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 57
Reguläre Ausdrücke in PHP preg_*
preg_match_all(RegExp, Subject, [Matches], [Flags])
Subject einfach gegen RegExp prüfen
Optional: Matches, Flags*, Offset*
Liefert 0 oder Anzahl der Treffer
Flags
PREG_PATTERN_ORDER Sortierung nach Subpattern (default)
PREG_SET_ORDER Sortierung nach Gesamtausdruck (vgl. preg_match)
...
![Page 58: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/58.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 58
Reguläre Ausdrücke in PHP preg_*
preg_match_all(RegExp, Subject, [Matches], [Flags])
Subject einfach gegen RegExp prüfen
Optional: Matches, Flags*, Offset*
Liefert 0 oder Anzahl der Treffer
Manual: http://php.net/manual/en/ref.pcre.php
![Page 59: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/59.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 59
Reguläre Ausdrücke in PHP Escaping
Bestimmte Zeichen müssen escaped werden
Double quotes “
\$ Dollarzeichen
\\ Backslash
\“ double quote
Single quotes '
\\ Backslash
\' single quote
![Page 60: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/60.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 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
![Page 61: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/61.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 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
![Page 62: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/62.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 62
Quellen
Reguläre Ausdrücke – kurz & gut, O'Reilly Verlag, ISBN: 3897215357
Wikipedia http://de.wikipedia.org/wiki/Regul%C3%A4re_Ausdr%C3%BCcke
![Page 63: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/63.jpg)
24.02.10 Dominik Siebel - Reguläre Ausdrücke & die PCRE- Bibliothek 63
Empfehlungen
Reguläre Ausdrücke – kurz & gut, O'Reilly Verlag, ISBN: 3897215357
Reguläre Ausdrücke, O'Reilly Verlag, ISBN: 3897217201
![Page 64: Reguläre Ausdrucke (PCRE)](https://reader033.vdokument.com/reader033/viewer/2022052909/55993aa11a28abb6038b456e/html5/thumbnails/64.jpg)
Reguläre Ausdrücke& die PCRE- Bibliothek
Vielen Dank für Eure Aufmerksamkeit!