匹配Vim中未跟随子模式的模式

时间:2015-12-31 16:24:20

标签: regex vim

假设我有一个包含以下字符串的行的文件:

...cat dog lorem ipsum...
...cat lizard ...
...cat bird ...
...cat dog ...

我想编写一个与cat 不是后跟dog的行匹配的正则表达式:

...cat lizard ...
...cat bird ...

我该怎么做?

1 个答案:

答案 0 :(得分:10)

通过跟随@!跟踪原子的反向匹配。在这种情况下,我们想要匹配的原子是与字符串dog匹配的捕获组:

/\vcat (dog)@!

细分:

  1. \v激活very magic解析模式
  2. (dog)匹配字符串dog并将其放入捕获组1
  3. @!会反转原子(dog),以便在dog 不存在时
  4. 时模式匹配

    这匹配cat(和尾随空格)后面没有dog的实例。