Wie schon dem Titel zu entnehmen plage ich mich mit einem regülären Ausdruck herum, komme aber irgendwie nicht dahinter, wo mein Denkfehler liegt.
Ich hab hier mal aufgemalt. worum es geht, und wie ich es verstehe:
$text =~ s/(<[^>|"]+>)*"/&/g;
| | | ||| | |
Beginnt mit < ----+ | | ||| | |
Gefolg von nicht > ------+ | ||| | |
oder --------+ ||| | |
von " ----------+|| | |
möglichst oft -----------+| | |
bis > ------------+ | |
Suchmuster " ---------------+ |
ersetzen durch & ------------------+
Folgender Code ausgeführt
$text = qq{<span style="color: blue;">Hier ist ein "Test-text" mit Anführungszeichen</span>};
$text =~ s/(<[^>|"]+>)*"/&/g;
print "Content-Type: text/html\n\n";
print $text;
Ergibt aber:
<span style=&color: blue;&>Hier ist ein &Test-text& mit Anführungszeichen</span>
Und die """ im span Tag möchte ich natürlich NICHT ersetzen, sondern nur diejenigen, die NICHT innnerhalb von TAGs sind.
Wer kann mir den entscheidenden Hinweis geben?
mfG der Hilker