我想我需要一个hpricot和regex的组合。我需要搜索'a'标签,其'href'属性以'abc /'开头,并返回其后的文本,直到下一个正斜杠'/'。
所以,给定:
<a href="/abc/12345/xyz123/">One</a>
<a href="/abc/67890/xyzabc/">Two</a>
我需要回来: '12345' 和 '67890'
任何人都可以伸出援手吗?我一直在努力解决这个问题。
答案 0 :(得分:0)
如何将字符串拆分为/
?
(我不知道Hpricot,但根据文档):
doc.search("a[@href]").each do |a|
return a.somemethodtogettheattribute("href").split("/")[2]; // 2, because the string starts with '/'
end
答案 1 :(得分:0)
或使用正则表达式:
s = '<a href="/abc/12345/xyz123/">One</a>'
s =~ /abc\/([^\/]*)/
return $1
答案 2 :(得分:0)
您不需要正则表达式但可以使用它。这里有两个例子,一个是正则表达式而另一个没有,使用Nokogiri,它应该与Hpricot兼容供你使用,并使用CSS访问器:
require 'nokogiri'
html = %q[
<a href="/abc/12345/xyz123/">One</a>
<a href="/abc/67890/xyzabc/">Two</a>
]
doc = Nokogiri::HTML(html)
doc.css('a[@href]').map{ |h| h['href'][/(\d+)/, 1] } # => ["12345", "67890"]
doc.css('a[@href]').map{ |h| h['href'].split('/')[2] } # => ["12345", "67890"]