如何使用正则表达式提取参数值,例如此字符串中的mver参数:
“/迷宫/ action.xml MVER = 66381&安培; CID = 474安培; melu = 0&安培; OSNAME =视窗%208安培; DBV = 38&安培; ucnt = 19”
我想使用
提取mver param(?*)MVER \ = \&安培;
即使它是最后一个参数(没有尾随的&符号),我怎样才能捕获它
谢谢
答案 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 >
答案 1 :(得分:0)
如果您使用的是Ruby 2并且参数是全部数字,那么这个简短的正则表达式就是您所需要的:
mver=\K\d+
(不需要捕获组,正则表达式直接匹配数字。)
如果参数可以包含除数字之外的其他字符,则可以使用此变体:
mver=\K\[^&]+
在线查看demo
它是如何运作的?
mver=
\K
告诉引擎从已返回的字符串中删除我们到目前为止匹配的内容,即mver=
答案 2 :(得分:0)
这是一个正则表达式: 如果你想捕获参数和价值。
mver=(((?!&).)*)
仅限值。
(?<=mver=)(((?!&).)*)