【问题标题】:search a word not containing something in "vi"搜索“vi”中不包含内容的单词
【发布时间】:2014-05-08 19:34:57
【问题描述】:

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

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

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

不知道该怎么做。

【问题讨论】:

    标签: regex search vim vi


    【解决方案1】:

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

    【讨论】:

    • 不幸的是我需要搜索单词。请看修改后的帖子
    【解决方案2】:

    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. 如果您想查找类似的字符串,请从字符串中删除 ^ AAXCBAAXC 形式的字符串内。

    【讨论】:

    • 试过\AA((?!B{2})|(?!C{2})),但最终得到E486: Pattern not found: AA((?!B{2})|(?!C{2}))
    • 那是正则表达式看你需要寻找的vim字符串
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    相关资源
    最近更新 更多