0

この文字列から mver param のように、正規表現を使用して param 値を抽出するにはどうすればよいですか。

"/maze/action.xml?mver=66381&cid=474&melu=0&osName=Windows%208&dbv=38&ucnt=19"

を使用してmverパラメーターを抽出したい

mver\=(.*?)\&

最後のパラメーターであってもキャプチャするにはどうすればよいですか (末尾のアンパサンドはありません)

ありがとうございました

4

3 に答える 3

4

これは簡単な方法です -

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ください。

于 2014-05-29T10:19:30.900 に答える
0

Ruby 2 を使用していて、パラメーターがすべて数字の場合、この短い正規表現だけで十分です。

mver=\K\d+

(キャプチャ グループは必要ありません。正規表現は数字と直接一致します)。

パラメータに数字以外の文字を含めることができる場合は、次のバリエーションを使用できます。

mver=\K\[^&]+

オンラインデモを見る

それはどのように機能しますか?

  1. リテラルに一致しますmver=
  2. \Kこれまでに一致したもの、つまりmver=返される文字列から削除するようにエンジンに指示します
  3. 何桁でもマッチします。これらの数字は、返される最終的な一致になります。
于 2014-05-29T10:20:18.873 に答える
0

正規表現は次のとおりです。パラメーターと値の両方をキャプチャする場合。

mver=(((?!&).)*) 

価値だけのために。

(?<=mver=)(((?!&).)*)
于 2014-05-29T10:24:52.947 に答える