Hallöle,
Also hab ich probiert, eine "negative lookahead assertion einzusetzen:
die ist hier aber fehl am platze - du brauchst eine lookbehind assertion:
Aha - die kannte ich noch nicht - Wildedit unterstützt die nicht.
finde: (?<!abc);)
ersetze durch: ###
ergebnis: abc;) ### def###
Ok, im PHP klappt das - muß ich halt damit statt mit Wildedit arbeiten.
In der Hilfe des Tools (WildEdit) heißt es:
"(?!abc)" matches zero characters only if they are not followed by the expression "abc".
was heißt denn "not _followed_" - ist es das, was du bezwecken wolltest?
Nö, nicht wirklich.
aber die neg. lookahead assertion war das einzige, was ich in der Wildedit-Hilfe gefunden hab, was zwar prüft, ob die Zeichen vorhanden sind, diese aber nicht in den match aufnimmt.
Ich danke Dir für diese "Rücksichtnahme" ;-)
Also mit konstantem String abc klappt es jetzt.
Leider beschwert sich PHP, wenn ich statt des konstanten Strings alternativ unterschiedlich lange Strings benutze:
(?<!(abc|de|ghij));)
da kommt dann eine Warnung:
Compilation failed: lookbehind assertion is not fixed length at offset 16 in <filename> on line <linenumber>
(der Offset scheint sich auf die schließende Klammer der Alternative zu beziehen)
(?<!&(amp|gt|lt|quot));)
ist das, was ich eigentlich bräuchte (was aber nicht funktioniert wegen der unterschiedlichen Längen).
cu,
Robert