Regex 在Perl中解析URL参数
我正在编写一些教程来解释GET/POST之类的内容,并且需要手动解析URI。下面的perl代码可以工作,但我尝试做两件事:Regex 在Perl中解析URL参数,regex,perl,Regex,Perl,我正在编写一些教程来解释GET/POST之类的内容,并且需要手动解析URI。下面的perl代码可以工作,但我尝试做两件事: 列出每个键/值 能够查找一个特定值 我不关心的是将特殊字符替换为空格或任何东西,我需要得到的一个值应该是一个数字。在我使用的其他语言中,所讨论的正则表达式应该使用第1部分/第2部分将每个键/值分组到一个分组中,Perl是否也这样做?如果是这样,我如何将其放入地图中 my @paramList = split /(?:\?|&|;)([^=]+)=([^&|;
my @paramList = split /(?:\?|&|;)([^=]+)=([^&|;]+)/, $ENV{'REQUEST_URI'};
if(@paramList)
{
print "<h1>The Params</h1><ul>";
foreach my $i (@paramList) {
if($i) {
print "<li>$i</li>";
}
}
print "<ul>";
}
将键值对列表输入到散列中如何
my %paramList = $ENV{'REQUEST_URI'} =~ /(?:\?|&|;)([^=]+)=([^&|;]+)/g;
(据我所知,拆分没有理由)
这主要依赖于有一个大小相等的匹配列表,其中每个“before-=
”对象成为散列中的一个键,值是它的配对“after-=
”对象
为了获得没有值的“pairs”(如comments=
)将最后一个模式中的+
更改为*
,如果能看到ENV
变量的示例(以及s0为什么/如何需要拆分
),那就太好了。我已经将其添加到帖子中。谢谢你,收到了--编辑了我的答案。。。还在检查。。。这就是你需要的吗?唯一的调整是我的正则表达式,需要将final+改为*来捕获那些没有值的,一切都很好,谢谢@没错!只是注意到了,测试了,并更新了一条评论
my %paramList = $ENV{'REQUEST_URI'} =~ /(?:\?|&|;)([^=]+)=([^&|;]+)/g;