-1
4

2 に答える 2

4

aタグのパラメーターを見つけたい場合hrefは、通常は正規表現ではない適切なツールを使用してください。おそらく、HTML/XML パーサーを使用する必要があります。

Nokogiriは、Ruby で最適なパーサーです。

require 'nokogiri'
require 'open-uri'

doc = Nokogiri.HTML(open('http://www.example.org/index.html'))
doc.search('a').map{ |a| a['href'] }

pp doc.search('a').map{ |a| a['href'] }
# => [
# =>  "/",
# =>  "/domains/",
# =>  "/numbers/",
# =>  "/protocols/",
# =>  "/about/",
# =>  "/go/rfc2606",
# =>  "/about/",
# =>  "/about/presentations/",
# =>  "/about/performance/",
# =>  "/reports/",
# =>  "/domains/",
# =>  "/domains/root/",
# =>  "/domains/int/",
# =>  "/domains/arpa/",
# =>  "/domains/idn-tables/",
# =>  "/protocols/",
# =>  "/numbers/",
# =>  "/abuse/",
# =>  "http://www.icann.org/",
# =>  "mailto:iana@iana.org?subject=General%20website%20feedback"
# => ]
于 2012-11-13T00:18:49.763 に答える
1

この正規表現にはいくつかの問題があります。

  • 空のタグの末尾のスラッシュの前にスペースが必要であるとは限りませんが、正規表現では必要です

  • あなたの正規表現は非常に冗長で冗長です

<a> タグから URL を抽出します。

link = /<a \s   # Start of tag
    [^>]*       # Some whitespace, other attributes, ...
    href="      # Start of URL
    ([^"]*)     # The URL, everything up to the closing quote
    "           # The closing quotes
    /x          # We stop here, as regular expressions wouldn't be able to
                # correctly match nested tags anyway
于 2012-11-12T23:24:30.947 に答える