我希望删除与模式不匹配的所有内容
我尝试了什么:
我对这个正则表达式模式进行了斜线搜索:
\d\+_.*\n.*
匹配两对线:
A
50
Y
Not allowed
According to registry coding
3_Tumour_ID ### match
Tumour identification ### match
A
50
Y
Not allowed
According to registry coding
4_Day_DoB ### match
Day of birth ### match
F
2
然后我尝试删除除了这些匹配之外的所有内容:
:v//d
我明白了:
3_Tumour_ID
4_Day_DoB
但我期待着这个:
3_Tumour_ID
Tumour identification
4_Day_DoB
Day of birth
这是正确的,因为它保留了所有匹配的行,而不仅仅是每个匹配的第一行。
我想要匹配的第二行(在我希望匹配的每对行中)仅在它立即成为每对中的第一行的前提下匹配。
答案 0 :(得分:5)
您无法使用:v//del comd
来执行此操作。由于您的搜索模式包含新行,但:g, :v
将执行基于行的处理。因此,Tumour...
和Day of...
行将再次由:v
处理,最后删除。
你可以尝试的是:
qaq (to clear "a register)
:g//norm! "A2Y (this copy all matched lines into register a)
ggVG"ap
注意:我使用2Y
,因为您的模式中有一个\n
,也就是说,您的匹配结果将始终为两行。