位置情報で子どもの居場所をお知らせ

改行を含む文字列データ(以後データと呼ぶ)の中から正規表現であるパターンに合致した文字列を抜き出したいです。引き抜きたい文字列のパターンはデータの中に複数存在し、「最初に見つけた物」を抽出したいです。
具体的に以下の様に書きました。
d=DATA.read
puts $1 if d=~/<p class="user-name">\r?\n<a href="http.+"><em>(.+)<\/em><\/a>/m
__END__
<p class="user-name">
<a href="http://hoge.com"><em>aaa</em></a>xx
</p>
<p class="user-name">
<a href="http://hoge.com"><em>bbb</em></a>xx
</p>
<p class="user-name">
<a href="http://hoge.com"><em>ccc</em></a>xx
</p>
実行すると、cccが出力されます。
「最初に見つけた物」を抽出したいのですが最後に見つけたものになってしまってます。
どうしたら良いでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

.+ が最大マッチだからですね。


.+? に変えてください。両方。

このデータの場合には m が不要ではと言うのは当たってるけど。
    • good
    • 0
この回答へのお礼

notnotさん、ご回答ありがとうございました。

お礼日時:2013/06/17 14:44

Rubyはやった事ないので違っているかもしれませんが。



/m は必要なのかなって疑問と

>(.+)
([^<]+) では無理ですかね?

この回答への補足

n-junさん、ご回答有り難うございます。

mを取ったら最初に発見したのが出てきました。ありがとうございました。

補足日時:2013/06/15 20:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング