我有很多HTML文件,包含很多不必要的标签。
<span class="foo">A</span><span class="foo">B</span><span class="foo">C</span>...
我试图删除这一系列不必要的标签,然后像这样更改它们。
<span class="foo">ABC</span>
我在Ruby中使用了一个简单的正则表达式。
myhtml.gsub!(/<\/span><span class=".*?">/,"")
到目前为止它运作良好,但现在我对这样的标签有一个问题:
<span class="foo">A</span><span class="bar">B</span><span class="foo">C</span>
我的正则表达式还删除了必要的标记,例如<span class="bar">.
我想像这样使用捕获组
<span class="(.+?)">(.+?)<\/span><span class="\1">
...
但我不知道如何正确地写它。
如何重写正则表达式来解决它?
编辑:感谢您的评论,但对于缺乏信息感到抱歉,
答案 0 :(得分: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