如何使用Ruby正则表达式删除HTML?

时间:2014-06-17 10:52:32

标签: ruby regex

我希望使用Ruby中的正则表达式删除两个HTML标记中包含的所有内容以及标记本身。这是一个例子:

<tag>a bunch of stuff between the tags, no matter what it is</tag>

基本上,我想使用gsub!来过滤掉这种类型的所有实例,如下所示:

text_file_contents.gsub!(/appropriate regex/, '')

这样做有什么好的Ruby正则表达式?

1 个答案:

答案 0 :(得分:5)

正如评论use an html parser中所述。但是,如果您只想删除两个标记之间的所有内容而不关心嵌套(例如,如果您有<tag><tag></tag></tag>),那么您只需使用:

text_file_contents.gsub!(/<tag>.*?</tag>/, '')

但这又是不稳定的。 Nokogiri is really easy to use并且会更加稳定,请使用它。

require 'nokogiri'
doc = Nokogiri::XML(yourfile)
doc.search('//tag').each do |node|
  node.remove
end