Ruby:正则表达式,如果属性没有允许值,则删除标签

时间:2015-06-24 00:34:33

标签: ruby regex

我有这样的文字:

<a href="http://www.i-am-hacker.com/blah">click here!</a>blah-blah-some-text-here-blah<a href="http://www.some-good-website.com/blah">click here!</a>

如果<a></a> <a href=,那么删除所有some-good-website代码(结束其中的所有内容)的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

使用Nokogiri的可能解决方案:

require 'nokogiri'

TEST =  '<a href="http://www.i-am-hacker.com/blah">click here!</a>blah-blah-some-text-here-blah<a href="http://www.some-good-website.com/blah">click here!</a>'

page = Nokogiri::HTML(TEST)
links = page.css("a") # parse all <a></a> elements from content
links.each do |link|
    if link['href'] =~ /http:\/\/www\.i-am-hacker\.com\/blah/
        link.remove
    end
end
puts page # output content for debugging

<强>输出

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" 
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>blah-blah-some-text-here-blah<a href="http://www.some-good-website.com/blah">click here!</a>
</body></html>

有用的资源: http://ruby.bastardsbook.com/chapters/html-parsing/
这个网站帮助我了解了如何使用nokogiri

如果您需要安装nokogiri,可以使用以下命令执行此操作:

gem install nokogiri