不要使用
.*
,而是使用 .\{-}
。
%s/style=".\{-}"//g
另外,请参阅
:help non-greedy
vim 中的非贪婪搜索是使用 {-} 运算符完成的。像这样:
%s/style=".\{-}"//g
尝试一下:
:help non-greedy
有什么问题
%s/style="[^"]*"//g
如果您更熟悉 PCRE 正则表达式语法,那么
你已经用perl功能编译了[g]vim,使用测试
:验证并检查功能;如果有 +perl 就可以了)
尝试使用
进行搜索/替换:perldo s///
示例。交换 img 标签中的 src 和 alt 属性:
<p class="logo"><a href="/"><img src="/caminoglobal_en/includes/themes/camino/images/header_logo.png" alt=""></a></p>
:perldo s/(src=".*?")\s+(alt=".*?")/$2 $1/
<p class="logo"><a href="/"><img alt="" src="/caminoglobal_en/includes/themes/camino/images/header_logo.png"></a></p>
我发现此类问题的一个很好的解决方案是:
:%!sed ...
(如果您愿意,也可以使用 Perl)。 IOW,与其学习 vim 的正则表达式特性,不如使用您已经知道的工具。使用 perl 会使 ?修饰符可以使匹配变得不贪婪。
与
\v
(根据几条评论中的建议)
:%s/\v(style|class)\=".{-}"//g
你好,
Vim 的正则表达式处理并不是太出色。我发现 sed 的正则表达式语法与 vim 的功能非常匹配。
我通常将搜索突出显示设置为(:set hlsearch),然后在输入斜杠进入搜索模式后使用正则表达式。
编辑:马克,Dale Dougherty 的优秀著作“Sed & Awk”(已清理的亚马逊链接)中也介绍了最小化贪婪匹配的技巧。
第三章“理解正则表达式语法”很好地介绍了 sed 和 awk 涉及的更原始的正则表达式功能。仅简短阅读,强烈推荐。
HTH
干杯,