電子書籍の厳選無料作品が豊富!

パラメータqの部分にマッチさせる正規表現が分かりません。

# $urlの例
http://foo.bar/?q=hoge?&x=0&y=0
http://foo.bar/?q=perl
http://foo.bar/?q=perl+%e6%ad%a3%e8%a6%8f%e8%a1% …

hoge, perl, perl+%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%beだけを切り出したいのですが、現状は
# hogeしかマッチしない
 $url =~ /\?q\=(.+?)&+?$/$1/;
# 不要なパラメータにもマッチ
 $url =~ /\?q\=(.+?)&*?$/$1/; # => hoge?&x=0&y=0
となっています。

よろしくお願いします。

A 回答 (2件)

/^(q|.*&q)=([^&]+)(&.*|)$/$2/



最後の& がつづいてるかどうかの判別をわすれていた。
    • good
    • 0
この回答へのお礼

> (&.*|)
ありがとうございます!
|演算子の使い方すっかり忘れていました。

お礼日時:2011/08/23 13:10

1.QueryString 取得


2.&できる
3. 2の結果をループしながら = で区切る
4. 3の結果の 先頭側を 調べる。


をやらずにってことですな。

/^(q|.*&q)=([^&]+)&.*$/$2/



ではいかが?
動作確認していないので参考までに。
    • good
    • 0

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