この文字列から mver param のように、正規表現を使用して param 値を抽出するにはどうすればよいですか。
"/maze/action.xml?mver=66381&cid=474&melu=0&osName=Windows%208&dbv=38&ucnt=19"
を使用してmverパラメーターを抽出したい
mver\=(.*?)\&
最後のパラメーターであってもキャプチャするにはどうすればよいですか (末尾のアンパサンドはありません)
ありがとうございました
この文字列から mver param のように、正規表現を使用して param 値を抽出するにはどうすればよいですか。
"/maze/action.xml?mver=66381&cid=474&melu=0&osName=Windows%208&dbv=38&ucnt=19"
を使用してmverパラメーターを抽出したい
mver\=(.*?)\&
最後のパラメーターであってもキャプチャするにはどうすればよいですか (末尾のアンパサンドはありません)
ありがとうございました
これは簡単な方法です -
2.1.0 :001 > require 'uri'
=> true
2.1.0 :002 > uri = URI("/maze/action.xml?mver=66381&cid=474&melu=0&osName=Windows%208&dbv=38&ucnt=19")
=> #<URI::Generic:0x00000103011c98 URL:/maze/action.xml?mver=66381&cid=474&melu=0&osName=Windows%208&dbv=38&ucnt=19>
2.1.0 :003 > require 'cgi'
=> true
2.1.0 :004 > CGI::parse(uri.query)
=> {"mver"=>["66381"], "cid"=>["474"], "melu"=>["0"], "osName"=>["Windows 8"], "dbv"=>["38"], "ucnt"=>["19"]}
2.1.0 :005 > CGI::parse(uri.query)['mver']
=> ["66381"]
2.1.0 :006 >
この例を見てCGI::parse
ください。
Ruby 2 を使用していて、パラメーターがすべて数字の場合、この短い正規表現だけで十分です。
mver=\K\d+
(キャプチャ グループは必要ありません。正規表現は数字と直接一致します)。
パラメータに数字以外の文字を含めることができる場合は、次のバリエーションを使用できます。
mver=\K\[^&]+
オンラインデモを見る
それはどのように機能しますか?
mver=
\K
これまでに一致したもの、つまりmver=
返される文字列から削除するようにエンジンに指示します正規表現は次のとおりです。パラメーターと値の両方をキャプチャする場合。
mver=(((?!&).)*)
価値だけのために。
(?<=mver=)(((?!&).)*)