在“vi”中搜索不包含某些内容的单词

时间:2014-03-29 07:01:24

标签: regex search vim vi

我想在“vi”中搜索以下单词:

"AA" not followed by "BB" or "CC"

AAXC... -- OK
AABB... -- NOT OK
AACC... -- NOT OK

不知道该怎么做。

2 个答案:

答案 0 :(得分:3)

vim支持正则表达式搜索并替换http://vimregex.com/

这是所需的正则表达式:

AA((?!B{2})|(?!C{2}))

上述正则表达式可以验证here


在vim中:

/^\(AA\)\(BB\)\@!.*$

会找到所有AA..格式的字符串,并会跳过AABB个字符串。

  1. 要跳过AACCAABB,您可以使用:

    /^\(AA\)\(\(BB\)\|\(CC\)\)\@!.*$
    

    或等效地:

    /^\(AA\)\(\(B\{2\}\)\|\(C\{2\}\)\)\@!.*$
    
  2. 如果要查找字符串,请从字符串中删除^AAXC形式的字符串中BAAXC

答案 1 :(得分:0)

您可以使用正则表达式进行搜索,只需使用A [^ BC],如果它实际上那么简单(只是字符,而不是单词)。