以下是我正在使用的原材料:
line1=a1 abc
line2=abc
line3=aba
line4=cbc
我想匹配不包含字符串“abc”的行,结果是:
line3=aba
line4=cbc
我怎样才能在vim中获得它?也许表达式是perl中的(?!abc),我不知道如何在vim中编写正则表达式。
答案 0 :(得分:3)
要匹配不以abc结尾的行,您可以用两种方式编写表达式。我的首选是非常神奇的
/\v.*(abc)@!/
并没有非常神奇:
/.*\(abc\)\@!/
我建议你花些时间阅读:
:help magic
答案 1 :(得分:1)
答案 2 :(得分:1)
您似乎熟悉Perl正则表达式。您可能会对:help perl-patterns
感兴趣,您可以在其中使用Vim等效的常见Perl正则表达式模式。在那里,您可以看到,对于零宽度负面预测,您需要\@!
。
对于其他零宽度模式,包括:help perl-patterns
未列出的模式,请参阅:help /\@=
及以下内容。同样有用的是\zs
和\ze
,在许多情况下可以避免一些更复杂的零宽度匹配。