如何在vim中编写零宽度断言?
以下是我正在使用的原材料:如何在vim中编写零宽度断言?,vim,Vim,以下是我正在使用的原材料: line1=a1 abc line2=abc line3=aba line4=cbc 我想匹配不包含“abc”字符串的行,结果是: line3=aba line4=cbc 我怎样才能在vim中获得它?可能表达式是perl中的(?!abc),我不确定如何在vim中编写正则表达式。来自: 删除与图案不匹配的所有线条 :g//d 当然,您可以替换结尾处的d,而不是从以下位置删除行…: 删除与图案不匹配的所有线条 :g//d 当然,您可以替换结尾处的d来执行除删除行以外
line1=a1 abc
line2=abc
line3=aba
line4=cbc
我想匹配不包含“abc”字符串的行,结果是:
line3=aba
line4=cbc
我怎样才能在vim中获得它?可能表达式是perl中的(?!abc),我不确定如何在vim中编写正则表达式。来自:
删除与图案不匹配的所有线条
:g//d
当然,您可以替换结尾处的d
,而不是从以下位置删除行…:
删除与图案不匹配的所有线条
:g//d
当然,您可以替换结尾处的
d
来执行除删除行以外的操作…要匹配不以abc结尾的行,您可以用两种方式编写表达式。我最喜欢的是魔术
/\v.*(abc)@!/
而且没有什么魔力:
/.*\(abc\)\@!/
我建议您花些时间阅读:
:help magic
要匹配不以abc结尾的行,可以用两种方式编写表达式。我最喜欢的是魔术
/\v.*(abc)@!/
而且没有什么魔力:
/.*\(abc\)\@!/
我建议您花些时间阅读:
:help magic
您似乎熟悉Perl正则表达式。您可能会对
:help perl patterns
感兴趣,在这里您可以为常见的perl正则表达式模式提供Vim等价物。在这里,您可以看到,对于零宽度负前瞻,您需要\@代码>
有关其他零宽度模式,包括一些未在:help perl模式中列出的模式,请参见:help/\@=
和以下内容。同样有用的还有\zs
和\ze
,它们在许多情况下可以避免一些更复杂的零宽度匹配。您似乎熟悉Perl正则表达式。您可能会对:help perl patterns
感兴趣,在这里您可以为常见的perl正则表达式模式提供Vim等价物。在这里,您可以看到,对于零宽度负前瞻,您需要\@代码>
有关其他零宽度模式,包括一些未在:help perl模式中列出的模式,请参见:help/\@=
和以下内容。同样有用的还有\zs
和\ze
,它们在许多情况下可以避免一些更复杂的零宽度匹配