我想在“vi”中搜索以下单词:
"AA" not followed by "BB" or "CC"
即
AAXC... -- OK
AABB... -- NOT OK
AACC... -- NOT OK
不知道该怎么做。
答案 0 :(得分:3)
vim支持正则表达式搜索并替换http://vimregex.com/:
这是所需的正则表达式:
AA((?!B{2})|(?!C{2}))
上述正则表达式可以验证here。
在vim中:
/^\(AA\)\(BB\)\@!.*$
会找到所有AA..
格式的字符串,并会跳过AABB
个字符串。
要跳过AACC
和AABB
,您可以使用:
/^\(AA\)\(\(BB\)\|\(CC\)\)\@!.*$
或等效地:
/^\(AA\)\(\(B\{2\}\)\|\(C\{2\}\)\)\@!.*$
如果要查找字符串,请从字符串中删除^
在AAXC
形式的字符串中BAAXC
。
答案 1 :(得分:0)
您可以使用正则表达式进行搜索,只需使用A [^ BC],如果它实际上那么简单(只是字符,而不是单词)。