Hi Frank!
Ich bin jetzt zu faul zum Überprüfen, deshalb nur eine ganz kurze Antwort: mit ".*(?!&off)" suchst du ja nach einer maximalen Anzahl von beliebigen Zeichen, in denen nicht &off vorkommt. Vielleicht liegt es daran.
Allerdings weiß ich nicht, wieso du nicht die kürzere Methode verwenden willst, wenn sie funktioniert.
Genau, könnte man meinen, daß man mit .*(?!off) nach einer maximalen Anzahl von beliebigen Zeichen, in denen nicht &off vorkommt, sucht - genau das will ich ja auch. Leider findet der reguläre Ausdruck aber kein einziges Zeichen, was mir absolut unverständlich ist.
Logo, in diesem Falle könnte ich auch die kürzere Methode verwenden, in folgendem aber nicht mehr:
$text=~s/&on(.*(?!Sonne))&off/<$1>/ig;
In $& steht nun ein String in dem auch das Wort Sonne vorkommt. Check ich nicht!
Hoffentlich hat noch jemand eine Lösung!
Ciao
Micha