Nokogiri 内部的正则表达式用于数字



我有这段代码,我需要在整数的"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()转换为数字。如果它等于节点本身,则节点是一个数字。甚至可以使用不等式运算符检查范围。

相关内容

  • 没有找到相关文章

最新更新