練習 3-4 やりなおし

前回 ごにょごにょしたけど、String#scan 使えば簡単だった _| ̄|○

require 'open-uri'

RUBY_VERSION        # => "1.9.2"

puts open('http://www.google.com', 'r:cp932', &:read).
  scan(%r|<a.*?href="(.*?)".*?>(.*?)</a>|m).
  map{|url, text|"#{text} <#{url}>"}

# >> 画像 <http://www.google.co.jp/imghp?hl=ja&tab=wi>
# >> 動画 <http://video.google.co.jp/?hl=ja&tab=wv>
# >> 地図 <http://maps.google.co.jp/maps?hl=ja&tab=wl>
# >> ニュース <http://news.google.co.jp/nwshp?hl=ja&tab=wn>
# >> 書籍 <http://books.google.co.jp/bkshp?hl=ja&tab=wp>
# >> Gmail <http://mail.google.com/mail/?hl=ja&tab=wm>
# >> &raquo; <http://www.google.co.jp/intl/ja/options/>
# >> iGoogle </url?sa=p&pref=ig&pval=3&q=http://www.google.co.jp/ig%3Fhl%3Dja%26source%3Diglk&usg=AFQjCNEmQuNg1ivauCid9lXp5yYSx6AHXw>
# >> 設定 </preferences?hl=ja>
# >> ログイン <https://www.google.com/accounts/Login?hl=ja&continue=http://www.google.co.jp/>
# >> 検索オプション </advanced_search?hl=ja>
# >> 言語ツール </language_tools?hl=ja>
# >> 広告掲載 </intl/ja/ads/>
# >> Google について </intl/ja/about.html>
# >> Google.com in English <http://www.google.com/ncr>
# >> プライバシー </intl/ja/privacy.html>

しかし控え目マッチ /.*?/ って便利ですね。
昔は /"([^"]*)"/ とかしたもんですよ。

教訓

やっぱりリファレンスマニュアルは通読。