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