我正在努力寻找一种模式,允许我选择URL字符串的Parameter = Value元素的值部分。我希望它足够通用,我可以用任何术语替换'参数'并检索它的值。
例如,如果URL字符串是(它始终遵循此常规形式):
'http://www.mysite.com/home.aspx?userid=53&transaction=2&viewport=property'
我需要能够获取userid或transaction或viewport的get值部分,或者其他选择性的。
最好是添加一个参数名称,并且匹配其后面的eoutthing与&同样简单。我尝试制作通用匹配字符串......很糟糕。
我不能使用javascript函数或任何东西,它必须是类似perl的正则表达式匹配 (如果你很好奇,这适用于Apache JMeter。)
我吮吸正则表达式: - /提前感谢您的帮助。
答案 0 :(得分:8)
如果必须是正则表达式,
/userid=([^&]*)/
答案 1 :(得分:6)
在所有情况下,使用正则表达式解析URI可能对您不起作用:URI组件通常包含转义中的字符,它们可能会出现多次等等。
您可以使用Perl的URI模块来解析URI:
use strict;
use warnings;
use URI;
use Data::Dumper;
my $u = URI->new('http://www.mysite.com/home.aspx?userid=53&transaction=2&viewport=property');
my %q = $u->query_form;
print Dumper(\%q), "\n";
query_form
方法将查询字符串作为哈希值返回,这样可以很容易地提取您正在查找的参数:
print $q{'transaction'}, "\n";
答案 2 :(得分:4)
看起来这可能有效:<variable>=(\w+)
例如:userid=(\w+)
我假设我不会总是有“&amp;”在价值的最后。
由于这需要匹配JMeter测试的字符串,请查看官方文档:
http://jmeter.apache.org/usermanual/regular_expressions.html
我也会在这里使用在线perl正则表达式工具:
http://www.regexplanet.com/advanced/perl/index.html
如果您正在控制URL本身,您可以简单地创建3个正则表达式提取器(每个变量一个)。我有点像一个kludge,但比试图一次完成它更简单。这篇文章有一些更具体的例子:
http://community.blazemeter.com/knowledgebase/articles/65150-using-regex-regular-expression-extractor-with-jm