我有这段代码,我需要在整数的"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"])
但它不起作用。任何人都可以建议解决方法吗?
如果你想使用正则表达式,我相信你必须手动完成。它不能用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>
你可以在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()
转换为数字。如果它等于节点本身,则节点是一个数字。甚至可以使用不等式运算符检查范围。