{Perl_CGI_Einführung}

MuWeb CGI Einführung Privat
 
00 Index
01 Vorwort
02 Kickstart
03 Hello World
04 Variablen
05 Arrays
06 Queries
07 Vergleiche
08 Schleifen
09 Dateien
10 Reg_Exp
11 Strings
12 Subs
13 Links

CGI 10 - Reguläre Ausdrücke

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




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.