我有一個很大的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=""
可是我很難使比賽變得不愉快。 vim
個人第一次嘗試是 ide
%s/style=".*?"//g
可是Vim彷佛不喜歡?
。 不幸地刪除?
使比勝過於貪婪。 工具
如何使個人比賽不愉快? 學習
怎麼了spa
%s/style="[^"]*"//g
我發現,針對此類問題的一個好的解決方案是: code
:%!sed ...
(若是願意,也能夠使用perl)。 IOW而不是學習vim的正則表達式特性,而是使用您已經知道的工具。 使用perl會使? 修改器工做以使匹配不滿意。 regexp
G'day, orm
Vim的正則表達式處理不太出色。 我發現sed的regexp語法與vim功能的正確匹配有關。 get
我一般將搜索突出顯示設置爲(:set hlsearch),而後在輸入斜線後進入搜索模式,而後使用正則表達式。
編輯:馬克,Dale Dougherty的出色著做「 Sed&Awk」(通過消毒的Amazon連接 )也介紹了最小化貪婪匹配的技巧。
第三章「瞭解正則表達式語法」是對sed和awk涉及的更原始的正則表達式功能的出色介紹。 只有簡短的閱讀,強烈建議。
高溫超導
乾杯,
代替.*
使用.\\{-}
。
%s/style=".\\{-}"//g
另請參閱:help non-greedy
vim中的非貪婪搜索是使用{-}運算符完成的。 像這樣:
%s/style=".\{-}"//g
你試一試:
:help non-greedy