Jörk Behrends: Für absolut reguläre Ausdrucks Experten!

Beitrag lesen

Hallo Micha!

Und jetzt zu meiner Frage: Wieso funktioniert das mit folgendem Ausdruck nicht?
$text=~s/&on(.*(?!&off))&off/<$1>/ig;   # (?!...) ist ohne ...

Du suchst hier mit '(.*(?!&off))' nach einem Text, der an einer Stelle endet, auf die NICHT '&off' folgt. .* kann aber theoretisch schon ein paarmal &off enthalten. Nun kommt der Genickbruch:
Auf diesen Text, dem kein &off folgt, soll nun &off folgen ...

$text=~s/&on(.*(?!&sonne))&off/<$1>/ig;

Wenn '.*' auf 'die Sonne' passt, endet dieser Text an einer Stelle, auf die NICHT 'sonne' folgt.

Hoffe das hat die beim Hirnknoten lösen geholfen,
   Jörk