正则表达式匹配任何URL参数值(Perl语法)

时间:2014-02-11 21:42:20

标签: regex perl jmeter

我正在努力寻找一种模式,允许我选择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。)

我吮吸正则表达式: - /提前感谢您的帮助。

3 个答案:

答案 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