Skeeve: regulärer Ausdruck

Beitrag lesen

Moin!

/^\s*$xxx\b\s*=\s*("(?:[^"]|\")*"|'(?:[^']|\')*')/

wozu die wortgrenze "\b"? die ist doch schon implizit vorhanden, oder?

Korrekt. Macht der Gewohntheit. Es schadet aber auch nicht.

Durch die Diskussion über die Reihenfolge vom Gebackslashten Ausdruck und der Zeichenklasse fiel mir auf: Das geht besser:

/^\s*$xxx\s*=\s*("(?:[^\"]|\.)*"|'(?:[^\']|\.)*')/m

Damit dürfte auch PHP zufrieden sein ;-) In den Zeichenklassen wird explizit der Backslash ausgeschlossen. Ich denke nur so läßt sich auch ein Problem beheben, das mir erst jetzt aufgefallen ist:

$xxx="\"; $yyy="trallala";

würde mit meinem vorherigen Ausdruck den String "\"; $yyy=" finden. und nicht "\".

-- Skeeve