私はこのようなマークアップがたくさんある大きなHTMLファイルを持っています。
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="font-size: small; font-family: Times New Roman;">stuff here</span>
</p>
私はすべてのclass=""
とstyle=""
を取り除くためにVimの検索と置換をしようとしていますが、一致をあいまいにするのに苦労しています。
私の最初の試みはこれでした
%s/style=".*?"//g
しかしVimは?
を好きではないようです。残念ながら、?
を削除すると、一致が欲張りすぎになります。
どうすれば自分の試合を不公平にすることができますか?
.*
の代わりに.\{-}
を使用してください。
%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を使うとどうなる?修飾子はマッチを汚すために働く。
プラグイン eregex.vim はPerlスタイルの欲張りでない演算子*?
と+?
を処理します
\v
で(いくつかのコメントで示唆されているように)
:%s/\v(style|class)\=".{-}"//g