如何在vim中使用非贪婪?
How to use non-greedy in vim?
输入
\sn{1}\gn{2}\gn{3}\sn{4}\sn{5}\gn{6}\gn{7}\sn{8}\yr{2012}
需要输出
\sn{1}\sn{4}\yr{2012}
我使用了这个代码。但失败了。
%s/\sn{\([^}]*\)}.*\sn{\([^}]*\)}.*\yr/\sn{}\sn{}\yr{}/gec
vimregex 中的非贪婪算法是.\{-}
看:h \{-
了解详情
所以你的:s
命令可以写成:
%s/\(\sn{[^}]*}\).\{-}\(\sn{[^}]*}\).\{-}\(\yr{[^}]*}\).*//g
输入
\sn{1}\gn{2}\gn{3}\sn{4}\sn{5}\gn{6}\gn{7}\sn{8}\yr{2012}
需要输出
\sn{1}\sn{4}\yr{2012}
我使用了这个代码。但失败了。
%s/\sn{\([^}]*\)}.*\sn{\([^}]*\)}.*\yr/\sn{}\sn{}\yr{}/gec
vimregex 中的非贪婪算法是.\{-}
看:h \{-
了解详情
所以你的:s
命令可以写成:
%s/\(\sn{[^}]*}\).\{-}\(\sn{[^}]*}\).\{-}\(\yr{[^}]*}\).*//g