Regex, um nur dann einer ganzen Zeichenfolge zu entsprechen, wenn eine bestimmte Teilzeichenfolge / Suffix fehlt

8

Ich habe nach solchen Fragen gesucht, aber alle Fälle, die ich gefunden habe, wurden problemspezifisch gelöst, wie zum Beispiel die Verwendung von! g in vi, um die Regex-Treffer zu negieren oder andere Dinge zu finden , ohne eine Regex-Negation.

Ich bin also an einer "reinen" Lösung interessiert:

Wenn ich eine Reihe von Strings habe, muss ich sie mit einem regulären Ausdruck-Matcher filtern, so dass nur die Strings, denen eine bestimmte Teilstring fehlt, übereinstimmen. Zum Beispiel "Foo" herausfiltern in:

%Vor%

würde ergeben:

%Vor%

Ich habe versucht, es mit negativem Look-ahead / hinterher (?!regex) / (?<!regex) zu konstruieren, konnte es aber nicht herausfinden. Ist das überhaupt möglich?

    
Ivan Krechetov 28.12.2009, 10:13
quelle

1 Antwort

19

Versuchen Sie diesen regulären Ausdruck:

%Vor%

Dies wird ein Zeichen gleichzeitig verbrauchen und prüfen, ob kein Foo voraus ist. Das gleiche kann mit einem negativen Look-Behind gemacht werden:

%Vor%

Aber Sie können das auch ohne Umgehungszusicherungen tun:

%Vor%

Dies entspricht einem beliebigen Zeichen außer F oder einem F , auf das entweder kein o folgt oder ein o folgt nicht gefolgt von einem anderen o .

    
Gumbo 28.12.2009, 10:17
quelle

Tags und Links