2017-02-02 8 views
-1

私はこのような不要なタグをたくさん持っている多くのHTMLファイルを持っています。不要なHTMLタグを削除するための正規表現

この一連の不要なタグを削除して、このように変更しようとしています。

<span class="foo">ABC</span> 

Rubyで単純な正規表現を使用しました。 myhtml.gsub!(/<\/span><span class=".*?">/,"")

は、今のところそれがうまく働いたが、今私はこのようなタグに関する問題を抱えている:

​​

私の正規表現はまた、私はキャプチャグループを使用して考えるように<span class="bar">.

として必要なタグを削除しますこのように <span class="(.+?)">(.+?)<\/span><span class="\1"> ... しかし、正しく書き込む方法はわかりません。

正規表現をどのように書き換えて解決できますか?

編集:「foo」という、「バー」、「ホーヘ」、「ABC」のような多くのクラスがなどあります...コメントありがとうございましたが、情報の不足のため申し訳ありませんが、

  1. どのクラスの連続したタグがあるかわかりません。また
  2. は、私が
+0

したがって、各htmlファイルであっどのように多くの連続したタグを期待して「カント基本的に同じcssクラスのタグを削除しようとしていますタグが同じで連続的に発生している場合に発生します。 – Ali786

+0

https://github.com/rgrove/sanitizeを使用することができます – Kris

答えて

3

ベストを使用するnokogiri

タグを削除

doc = Nokogiri::HTML(string) 
doc.search("span.foo").remove 
doc.to_html 

マージの連続したタグ

doc = Nokogiri::HTML(string) 
doc.search("span.foo + span.foo").each do |each| 
    each.previous_element.inner_html += each.inner_html 
    each.remove 
end 
puts doc.to_html 
関連する問題