0

ここでは hpricot と正規表現の組み合わせが必要だと思います。「abc/」で始まる「href」属性を持つ「a」タグを検索し、次のスラッシュ「/」までそれに続くテキストを返す必要があります。

したがって、与えられた:

<a href="/abc/12345/xyz123/">One</a>
<a href="/abc/67890/xyzabc/">Two</a>

戻す必要があります: '12345' と '67890'

誰か手を貸してくれませんか?私はこれに苦労してきました。

4

3 に答える 3

0

正規表現は必要ありませんが、使用できます。以下に 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"]
于 2010-10-31T03:10:42.900 に答える
0

文字列を で分割するのはどう/ですか?

(私は Hpricot を知りませんが、ドキュメントによると):

doc.search("a[@href]").each do |a|
    return a.somemethodtogettheattribute("href").split("/")[2]; // 2, because the string starts with '/'
end
于 2010-10-30T22:46:32.957 に答える
0

または正規表現を使用します。

s = '<a href="/abc/12345/xyz123/">One</a>'
s =~ /abc\/([^\/]*)/
return $1
于 2010-10-30T23:05:12.407 に答える