Tom: Negierung regex

Beitrag lesen

Hello,

Danke für die Antwort

Ich möchte aus einen *.txt sämtliche Wörter ersetzen die dem Muster
[a-züöäß] nicht entsprechen.

Der die Wörter sind durch Leerzeichen von einander getrennt.

Das ist mMn mit Regular Expressions alleine nicht möglich.

Du kannst zwar mit positiven und negativen 'Assertions' arbeiten, also Muster finden, die oder die nicht von einem anderen Muster eingeleitet oder gefolgt werden, aber "Nicht-Muster" zu finden ist von der Logik her wohl nicht möglich. Wo soll das Muster beginnen und wo soll es enden? Eine Verschiebung von Beginn oder Ende würde ja schon ausreichen, dass das Muster _nicht_ mehr zutrifft.

Du könntest das, wenn die Worte alle durch Leerzeichen getrennt werden, in mehrere Schritten erledigen. Aufteilung des Gesamtzeichenkette in einzelne 'Worte' mit explode(), dann das Array mit foreach() ablaufen und eventuell jetzt mit einem regulärem Ausdruck testen, ob das Wort dem Muster entspricht. Wenn es das nicht tut, ersetze oder lösche das Arrayelement, ganz nach Belieben.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de