Vim: Wie schließe ich ein ganzes Wort von meiner Suche aus?
Ziemlich grundlegende Frage, bin ich zu schreiben versucht, eine regex in Vim übereinstimmung mit jedem Satz, beginnend mit "abc "
direkt gefolgt von irgendetwas anderem als "defg"
.
Ich habe "[^defg]"
übereinstimmung mit jedem einzelnen Zeichen außer d, e, f oder g.
Mein Erster Instinkt war, zu versuchen /abc [^\(defg\)]
oder /abc [^\<defg\>]
aber keiner von denen funktioniert.
InformationsquelleAutor der Frage Dominic Dos Santos | 2008-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist der such-string.
Dem Konzept, das Sie suchen, heißt eine negative look-ahead assertion. Versuchen Sie, diese in vim weitere info:
InformationsquelleAutor der Antwort bmdhacks
vorangestellt oder gefolgt von?
Wenn es so wird, beginnend mit 'abc', dass s nicht (sofort), gefolgt von 'defg', Sie wollen bmdhacks' Lösung.
Wenn es so wird, beginnend mit 'abc', dass s nicht (sofort) vorausgeht, 'defg', du willst eine negative lookbehind:
Diese passen jedes vorkommen von 'abc', solange es nicht Teil der 'defgabc '. Sehen
:help \@<!
für mehr details.Wenn Sie wollen, zu entsprechen, 'abc', solange es nicht Teil der 'defg.*abc ', dann fügen Sie einfach ein
.*
:Passenden " abc " nur auf Linien, wo 'defg' nicht auftreten, die ähnlich ist:
Obwohl, wenn Sie gerade tun dies für eine substitution, können Sie diese leichter durch die Kombination von
:v//
und:s//
Diese werden an Stelle von '<was auch immer>' für 'abc' über alle Zeilen, die nicht enthalten 'defg'. Sehen
:help :v
für mehr.InformationsquelleAutor der Antwort rampion
Hier gehen wir, das ist eine haarige ein:
(ersetzen Sie XXXXXX mit dem Suchbegriff). Diese sucht nach für alles was nicht enthalten XXXXXX. Ich kann mir vorstellen, wenn du es getan hast:
Dies kann funktionieren, wie Sie es wollen. Hoffe, das hilft ein wenig!
InformationsquelleAutor der Antwort Lee H
/abc\ [^d][^e][^f][^g]
Es ist ziemlich umständlich für die großen Worte, sondern funktioniert wie ein Charme.
InformationsquelleAutor der Antwort Andy