Lieber Hilker,
$text =~ s/(<[^>|"]+>)*"/&/g;
was soll die Pipe "|" im Suchmuster? Eine character class funktioniert schon wie ein "oder". [^>"]+ findet alles, was aus Zeichen besteht, die weder > noch " sind. Wenn in Deinen Strings keine Pipe vorkommt, dann sollte sie in Deinem Suchmuster keine Probleme bereiten, ist aber vom Verständnis her vollkommen falsch dort.
Ja, dacht ich auch /(<[^>"]+>)/ findet aber zwar </span> aber NICHT <span style="color: blue;">, obwohl es das nach meinem Verständnis tun müßte!
»»...unvollständig ist, da sie den Ausdruck in Klammern nicht unverändert in den String zurückschreibt (Backreference)?
Ich ändere nun schon solange daran rum dass ich Knoten im Kopf hab :)
In PHP sähe das bei mir so aus:
$text = preg_replace('/(<[^>"]+>)*"/', "$1&", $text);
Das $1 ist die Backreference, die den Treffer des Ausdrucks in der Klammer repräsentiert (und dort wieder einfügt), während alles andere ersetzt wird.
ja klar... ist in Perl genauso... PHP ist ja eh "nur" nen ableger von Perl :))))
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Danke! aber wie gesagt, hat es nicht wirkich geholfen!
Gruß, der Hilker