s.oliver: regulärer Ausdruck

Beitrag lesen

Servus,

"(?:[^"]|\")*"

das funktioniert nicht so, wie Du Dir das wünschst - drehe die
Reihenfolge von '\"' und '[^"]' mal um.

wie müßte das dann aussehen?
ich steig bei den regulären Ausdruck im Moment nicht ganz durch

ich borge mir mal Skeeves Ausdruck,

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

und bemerke dazu zwei Dinge:

1. '^' und '$' machen in der Form nur Sinn, wenn Du entweder einen Einzeiler
durchsuchen willst, oder den Modifikator '/m' benutzt.

2. Die oder-Beziehung 'a|b' gibt schon 'true' bei 'a' zurück, wenn an der Position
im String 'a' vorkommt - 'b' wird gar nicht erst ausprobiert.

Das sollte es also tun:

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

, obwohl ich das (wenn überhaupt mit regulären Ausdrücken) wahrscheinlich
anders machen würde. Der Ausdruck '"(?:\"|[^"])*"' dient hier dazu, nicht
mitten im Ergebnis bei einem auskommentierten '"' hängen zu bleiben - in
dem Fall könnte kein Ergebnis gefunden werden.

Grüsse