phpbar.de logo

Mailinglisten-Archive

RE: [php] zu dämlich für RegEX

RE: [php] zu dämlich für RegEX

Andreas Demmer php at andreas-demmer.de
Mit Dez 1 16:45:16 CET 2004


Dirk wrote:

> Danke funktioniert. Nur irgendwie steige ich
> da nicht ganz durch, was den RegEX Kram angeht.
> Vor allem aber die Unterschiede zw. preg_match()
> und ereg(). Ich finde auch nirgend eine GUTE
> Doku zu dem kram.

Dann versuche ich das mal für Dich aufzudröseln:

preg_ sind Perl-kompatible Funktionen und die
Syntax ist ereg ist leicht verschieden. preg_
Funktionen benötigen einen Delimiter. Dieser
ist das erste und das letzte Zeichen und darf
ansonsten im eigentlichen Ausdruck nicht vorkommen.

Ich habe z.B. "|" als Delimiter gewählt, gängig
sind auch Slashes (/) und Gradzeichen (°).

Nach dem letzten Delimiter stehen die Modifier,
in diesem Fall das kleine i. Es sorgt einfach dafür,
dass die Gross- / Kleinschreibung ignoriert wird.

Nach dem ersten und vor dem letzten Delimiter kann
man Hinweise geben, wo der Treffer im Gesamtkontext
sein muss. "^" Bedeuetet am Anfang und "$" am Ende.
Also: Der Treffer muss vom Anfang bis zum Ende gehen,
andere Zeichen davor oder danach sind ungültig.

Nun zum Kern in preg_match('|$ ... ^|i')

[] Dies sagt aus, dass irgendeines der Zeichen
dazwischen ok ist, das folgende Plus ([]+) beduetet:
Beliebig viele Zeichen davon aber mindestens eines.

Die Zeichenauswahl war:
a-z_\.\-0-9

a-z  ->  bel. Zeichen von a bis z
_    ->  oder ein Unterstrich
\.   ->  oder ein Punkt, der ist escaped da ein Punkt
         ein reguläres Sonderzeichen wäre, nämlich "be-
         liebiges Zeichen"
\-   ->  oder ein Minus, das ist escaped da ein Minus
         ein reguläres Sonderzeichen wäre, nämlich "bis"
         wie etwa in "a-z"
0-9  ->  oder ein Zeichen von 0 bis 9

Alles klar? :-)

> Ich finde auch nirgend eine GUTE
> Doku zu dem kram.

Das PHP Magazin hatte eine recht gute Artikelserie zu
dem Kram. Davor waren RegExes auch für mich ein rotes
Tuch, aber wenn man es einmal geschnallt hat (ist wirklcih
nicht schwer) werden aus den ASCII-Art Dingern plötzlich
sinnvolle Regeln! ;-)

Gruss,
Andreas

--
http://www.andreas-demmer.de



php::bar PHP Wiki   -   Listenarchive