ここでは hpricot と正規表現の組み合わせが必要だと思います。「abc/」で始まる「href」属性を持つ「a」タグを検索し、次のスラッシュ「/」までそれに続くテキストを返す必要があります。
したがって、与えられた:
<a href="/abc/12345/xyz123/">One</a>
<a href="/abc/67890/xyzabc/">Two</a>
戻す必要があります: '12345' と '67890'
誰か手を貸してくれませんか?私はこれに苦労してきました。
正規表現は必要ありませんが、使用できます。以下に 2 つの例を示します。1 つは正規表現を使用し、もう 1 つは使用せずに 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"]
文字列を で分割するのはどう/
ですか?
(私は Hpricot を知りませんが、ドキュメントによると):
doc.search("a[@href]").each do |a|
return a.somemethodtogettheattribute("href").split("/")[2]; // 2, because the string starts with '/'
end
または正規表現を使用します。
s = '<a href="/abc/12345/xyz123/">One</a>'
s =~ /abc\/([^\/]*)/
return $1