Tom: Regular Expression

Beitrag lesen

Hello seth,

bei deinen nicht-benoetigten geklammerten teilausdruecken, kannst du das speichern (als $1, $2, ...) unterdruecken, indem du der oeffnenden klammer ?: nachstellst, also statt (foo) (?:foo).

Ok, irgendwann wusste ich das sogar schon mal. ;-)

vorschlag:
preg_match("#^($type)(?:\((?:(\d+)|(\d+),(\d+)|('.*'))\))?(?:\s(unsigned))?$#i", $metasum, $matches);

in $matches steht dann (falls gefunden)
[0] => alles gematchte
[1] => der typ ($type)
[2] => eine zahl, wenn sie der einzige parameter ist
[3] => eine zahl, wenn sie der erste von zwei parametern ist
[4] => eine zahl, wenn sie der zweite von zwei parametern ist
[5] => string-parameter (alle zusammen als ein string)
[6] => "unsigned"

Das sieht gut aus. Scheint sicher zu funktionieren.
Ich hatte versucht, dass der erste und der einzige Größenparameter ([3] oder [2]) immer in demselben Match-Element landen sollte. Aber das bekommt man wohl nicht hin?

Vielen Dank für die Hilfe.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau