我想删除与模式匹配但最后一次出现的所有行。 所以假设我们有这样的文字:
test a 043
test a 123
test a 987
test b 565
我瞄准的结果是:
test a 987
test b 565
是否有可能在vim中只使用正则表达式来比较这样的字符串?这也假设此示例中的a
和b
是动态的((test\s\w\s(.*)
)。
答案 0 :(得分:4)
你需要在vim中使用前瞻性正则表达式:
:g/\v(^test \w+)(\_.*\1)@=/d
RegEx分手:
\v # very magic to avoid escapes
( # capturing group #1 start
^test \w+ # match any line starting with test \w+
) # capturing group #1 end
(\_.*\1)@= # positive lookahead to make sure there is at least one of \1 below