Vim regex删除冒号和空格或换行符之间的所有内容
我试图使用vim regex擦除冒号Vim regex删除冒号和空格或换行符之间的所有内容,regex,vim,Regex,Vim,我试图使用vim regex擦除冒号:和空格或换行符后的所有内容。下面是我正在处理的文本 ablatives ablative:ablative_A s:+PL abounded abound:abound_V ed:+PAST abrogate abrogate:abrogate_V abusing ab:ab_p us:use_V ing:+PCP1 accents' accent:accent_N s:+PL ':+GEN accord
:
和空格或换行符后的所有内容。下面是我正在处理的文本
ablatives ablative:ablative_A s:+PL
abounded abound:abound_V ed:+PAST
abrogate abrogate:abrogate_V
abusing ab:ab_p us:use_V ing:+PCP1
accents' accent:accent_N s:+PL ':+GEN
accorded accord:accord_V ed:+PAST
因此,我想从中得到以下信息:
ablatives ablative s
abounded abound ed
abrogate abrogate
abusing ab us ing
accents' accent s '
accorded accord ed
我对这一点很迷茫,但我尝试了以下陈述:
:s/\:. / /g
我正在尝试使用它来获得至少一种我需要的模式。这似乎可以提供您想要的结果:
:%s/:.\{-}\([ \n]\)/\1/g
–文字:
。我不知道你为什么在你的问题中逃避这个,因为你不需要:
–任意字符。
–尽可能少地重复零次或多次(“ungreedy”,如许多其他regexp引擎中的\{-}
)*?
–为替换模式中的引用启动新的子组。\(
–start”匹配这些字符中的任何一个。[
–文字空间
–换行符\n
–结束]
[
–结束子组\)
\1
插入空格或换行符,具体取决于替换的内容
您也可以使用\\u s
而不是[\n]
,这将匹配所有空格、制表符和换行符。我个人更喜欢[\n]
,因为这在regexp引擎中更具可移植性(而\\u s
是一种特定于Vim的构造)
有关上述任何一项的更多信息,请参见:help
:%s/:[^ ]*//g
:%s/:[^]*//g
这将删除后跟零个或多个非空格字符的
:
。行尾的换行符不会受到影响,只需执行以下操作:
:%s/:\S*//g
\S
非空白字符