MudGuard: regulärer Ausdruck tut nicht wie ich möchte...

Beitrag lesen

Hi,

s/(<[^>|"]+>)*"/&amp;/g;

( bis ) gruppiert mit Speichern
* von dem vorherigen Teil (hier: der Gruppe) beliebig viele (auch 0)
Danach ein "

Da der gesamte Teil vor dem " optional ist (kann ja auch 0 mal vorkommen), wird jedes " durch &amp; ersetzt.
Warum eigentlich?
Bei Ersetzung durch &quot; wär's mir schon schleierhaft (für korrektes HTML ist es nicht notwendig, " außerhalb von "-begrenzten Attributwerten zu ersetzen).
Aber warum Du Anführungszeichen durch Kaufmannsund ersetzen willst, erschließt sich mir überhaupt nicht.

Desweiteren: Der Teil in der () hat andere Bedeutung als Du vermutest:

< und > matchen genau diese Zeichen.
Dazwischen hast Du eine negierte Zeichenklasse - die matcht auf ein beliebiges Zeichen außer den genannten "größer", "Pipe" und "Anführungszeichen".
Davon soll es mindestens eins geben.

Innerhalb einer Zeichenklasse haben die meisten Metacharacters keine Meta-Bedeutung mehr.

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.