我有这个代码,我需要在整数的“href =”之前添加一个正则表达式:
f = File.open("us.html")
doc = Nokogiri::HTML(f)
ans = doc.css('a[href=]')
puts doc
我尝试过:
ans = doc.css('a[href=\d]
或:
ans = doc.css('a[href="\d"])
但它不起作用。有人可以建议解决方法吗?
答案 0 :(得分:4)
如果您想使用正则表达式,我相信您必须手动执行此操作。使用CSS或XPath选择器无法完成。
您可以通过迭代元素并将其href
属性与正则表达式进行比较来实现。例如:
html = %q{
<html>
<a href='1'></a>
<a href='adf'></a>
</html>
}
doc = Nokogiri::HTML(html)
ans = doc.css('a[href]').select{ |e| e['href'] =~ /\d/}
#=> <a href="1"></a>
答案 1 :(得分:2)
您可以在XPath中执行此操作:
require 'nokogiri'
html = %q{
<html>
<a href='1'></a>
<a href='adf'></a>
</html>
}
doc = Nokogiri::HTML(html)
puts doc.xpath('//a[@href[number(.) = .]]')
#=> <a href="1"></a>
XPath函数number()
执行转换为数字。如果它等于节点本身,则节点是一个数字。甚至可以使用不等运算符来检查范围。