CGI Einführung



CGI 10 - Reguläre Ausdrücke

Vorheriges KapitelZurück zum IndexNächstes Kapitel

Reguläre Ausdrücke sind Klasse - Mit Ihnen kann man in Perl so einiges anstellen (mehr dazu in 10.1), aber Sie sind auch nicht unbedingt einfach. Dieses Dokument deckt nicht alle Ausdrücke ab! Wer mehr Infos zu den regulären Ausdrücken sucht kann Sie hier (iX Artikel) finden.


Unterkapitelindex

10.1 Wofür Reguläre Ausdrücke?
10.2 Erste Ausdrücke
10.3 Zeichenklassen
10.4 Ersetzen
10.5 Quantifier




10.1 Wofür Reguläre Ausdrücke?
Reguläre Ausdrücke kann man (fast) überall in Perl verwenden. Hier nur 3 Beispiele:

- Als Bedingung in if Anweisung sowie for / while Schleifen
- Zum Ersetzen von Strings
- Zum Teilen von Strings Siehe Kapitel 11




10.2 Erste Ausdrücke
Hier ein paar Beispiele für regüläre Ausdrücke:

01
02
03

if ("abc" =~ /a/i){}
if ("abc" =~ /a.c/i){}
if ("abc" =~ /(a|C)/i){}

01 Es wird geprüft ob "abc" den Buchstaben "a" enthält.
02 Es wird geprüft ob "abc" den Buchstaben "a" gefolgt von irgendeinem Zeichen gefolgt vom Buchstaben "c" enthält.
03 Es wird geprüft ob "abc" ein "a" oder "C" enthält

Alle 3 Bedingungen treffen zu. Durch die Option "/i" wird nicht zwischen Groß & Kleinschreibung unterschieden.



10.3 Zeichenklassen
Bestimmte Zeichen sind in Klassen zusammengefasst:


\d
\w
\s
\D
\W
\S

Jede Ziffer
Jedes Zeichen (A-Z; 0-9; _ Unterstrich)
Spezielle Zeichen (Tab, Zeilenumbr. etc.)
Jedes Zeichen außer Ziffern
Jedes Zeichen außer A-Z und 0-9 sowie der _ Unterstrich
Jedes Zeichen außer speziellen (Tab etc.)


Diese Zeichenklassen können in die regulären Ausdrücke eingesetzt werden, also zum Beispiel:

01

if ("abc" =~ /\w/gi){ }


In dem Beispiel wird geprüft ob "abc" einen Buchstaben oder eine Ziffer enthält (trifft natürlich zu).



10.4 Ersetzen
Mit regulären Ausdrücken kann man nicht nur suchen, sondern auch ersetzen. Dabei gibt es die Möglichkeiten wie oben beschrieben. Ein Beispiel:

01
02
03

my $abc = "a0c";

$abc =~ s/\d/b/i;


Im Beispiel wird die 0 (siehe Zeichenklassen) durch ein "b" ersetzt und so hat $abc am Ende den Wert "abc" statt "a0c". Beachten Sie das "s" hinter dem "=~".



10.5 Quantifier
Der letzte Clou auf den Ich in diesem Dokument eingehen möchte sind Quantifier. Dabei handelt es sich um folgende:

+
*
?

[a]
[a,]
[a,b]

Ein- oder mehrmals vorhanden
Null oder mehrmals vorhanden
Kein oder einmal vorhanden
a Mal vorhanden
Mindestens a mal vorhanden
Mindest a aber nicht öfter als b mal vorhanden


Die Quantifier können zwischen den Rest des regulären Ausdrucks gesetzt. Hier ein Beispiel:

01
02
03

my $abc "fisch";

$abc =~ s/I.*/risch/i;



In diesem Beispiel hat $abc am Ende den Wert "frisch" da im regulären Ausdruck nach I und beliebig vielen folgenden Buchstaben gesucht wird und der gefunde String dann durch "risch" ersetzt wird - Also f + isch + risch.


Vorheriges KapitelZurück zum IndexNächstes Kapitel