【发布时间】:2014-05-08 19:34:57
【问题描述】:
我想在“vi”中搜索如下单词:
"AA" not followed by "BB" or "CC"
即
AAXC... -- OK
AABB... -- NOT OK
AACC... -- NOT OK
不知道该怎么做。
【问题讨论】:
我想在“vi”中搜索如下单词:
"AA" not followed by "BB" or "CC"
即
AAXC... -- OK
AABB... -- NOT OK
AACC... -- NOT OK
不知道该怎么做。
【问题讨论】:
您可以使用正则表达式进行搜索,只需使用 A[^BC],如果它实际上是那么简单(只是字符,而不是单词)。
【讨论】:
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 形式的字符串内。
【讨论】:
\AA((?!B{2})|(?!C{2})),但最终得到E486: Pattern not found: AA((?!B{2})|(?!C{2}))