我有一个很大的HTML文件,其中包含很多如下所示的标记:
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="font-size: small; font-family: Times New Roman;">stuff here</span>
</p>
我试图做一个Vim搜索和替换来摆脱所有的class=""
和style=""
但是我很难使比赛变得不愉快。
我的第一次尝试是
%s/style=".*?"//g
但是Vim似乎不喜欢?
。 不幸地删除?
使比赛过于贪婪。
如何使我的比赛不愉快?
#1楼
怎么了
%s/style="[^"]*"//g
#2楼
我发现,针对此类问题的一个好的解决方案是:
:%!sed ...
(如果愿意,也可以使用perl)。 IOW而不是学习vim的正则表达式特性,而是使用您已经知道的工具。 使用perl会使? 修改器工作以使匹配不满意。
#3楼
G'day,
Vim的正则表达式处理不太出色。 我发现sed的regexp语法与vim功能的正确匹配有关。
我通常将搜索突出显示设置为(:set hlsearch),然后在输入斜线后进入搜索模式,然后使用正则表达式。
编辑:马克,Dale Dougherty的出色著作“ Sed&Awk”(经过消毒的Amazon链接 )也介绍了最小化贪婪匹配的技巧。
第三章“了解正则表达式语法”是对sed和awk涉及的更原始的正则表达式功能的出色介绍。 只有简短的阅读,强烈建议。
高温超导
干杯,
#4楼
代替.*
使用.\\{-}
。
%s/style=".\\{-}"//g
另请参阅:help non-greedy
#5楼
vim中的非贪婪搜索是使用{-}运算符完成的。 像这样:
%s/style=".\{-}"//g
你试一试:
:help non-greedy
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3160987