捕获获取参数值

时间:2014-05-29 10:17:16

标签: ruby regex getparameter

如何使用正则表达式提取参数值,例如此字符串中的mver参数:

  

“/迷宫/ action.xml MVER = 66381&安培; CID = 474安培; melu = 0&安培; OSNAME =视窗%208安培; DBV = 38&安培; ucnt = 19”

我想使用

提取mver param
  (?*)

MVER \ = \&安培;

即使它是最后一个参数(没有尾随的&符号),我怎样才能捕获它

谢谢

3 个答案:

答案 0 :(得分: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::parsethis example

答案 1 :(得分:0)

如果您使用的是Ruby 2并且参数是全部数字,那么这个简短的正则表达式就是您所需要的:

mver=\K\d+

(不需要捕获组,正则表达式直接匹配数字。)

如果参数可以包含除数字之外的其他字符,则可以使用此变体:

mver=\K\[^&]+

在线查看demo

它是如何运作的?

  1. 我们匹配文字mver=
  2. \K告诉引擎从已返回的字符串中删除我们到目前为止匹配的内容,即mver=
  3. 我们匹配任意数量的数字。这些数字将是要返回的最终匹配。

答案 2 :(得分:0)

这是一个正则表达式: 如果你想捕获参数和价值。

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

仅限值。

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