MudGuard: ReExp

Beitrag lesen

Hi,

ich suche aber doch nach einem wiederkehrenden muster oder nicht.

tust Du das? Wenn ja, dann habe ich Deine Use-Cases fehlinterpretiert. Nach meinem Verständnis suchst Du Dubletten.

Eine Dublette ist doch ein Muster - da wiederholt sich etwas ...

(?<=^|;)([^;]+);\1(?=;|$)

d.h.: lookbehind: entweder Stringanfang oder Trennzeichen, danach ein Wert, danach ein Trennzeichen, danach nochmal derselbe Wert, danach ein lookahead auf Trennzeichen oder Stringende.

lookbehind + lookahead sind m.E. notwendig, da sonst zum Beispiel bei bla;aber eine Ersetzung zu blaber stattfinden würde.
(Falls es sich bei den Werten nur um "Wortzeichen" handeln kann, könnten es Wortgrenzen \b auch tun)

ersetzen durch \1

sollte m.E. Dubletten in semikolon-getrennten Werten entfernen (Voraussetzung: a;b;a;d gilt nicht, die doppelten Werte müssen aufeinanderfolgen - sonst wird's etwas aufwendiger)
Sollen auch noch häufigere Vorkommen in einem Durchgang miterledigt werden, müßte es mit

(?<=^|;)([^;]+)(?:;\1)+(?=;|$)

klappen.

cu,
Andreas

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