我希望使用Ruby中的正则表达式删除两个HTML标记中包含的所有内容以及标记本身。这是一个例子:
<tag>a bunch of stuff between the tags, no matter what it is</tag>
基本上,我想使用gsub!
来过滤掉这种类型的所有实例,如下所示:
text_file_contents.gsub!(/appropriate regex/, '')
这样做有什么好的Ruby正则表达式?
答案 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