我该如何使我的比赛在vim中变得不贪心?

风格不统一 提交于 2020-02-27 10:14:01

我有一个很大的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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!