Regex 在Perl中解析URL参数

Regex 在Perl中解析URL参数,regex,perl,Regex,Perl,我正在编写一些教程来解释GET/POST之类的内容,并且需要手动解析URI。下面的perl代码可以工作,但我尝试做两件事: 列出每个键/值 能够查找一个特定值 我不关心的是将特殊字符替换为空格或任何东西,我需要得到的一个值应该是一个数字。在我使用的其他语言中,所讨论的正则表达式应该使用第1部分/第2部分将每个键/值分组到一个分组中,Perl是否也这样做?如果是这样,我如何将其放入地图中 my @paramList = split /(?:\?|&|;)([^=]+)=([^&|;

我正在编写一些教程来解释GET/POST之类的内容,并且需要手动解析URI。下面的perl代码可以工作,但我尝试做两件事:

  • 列出每个键/值
  • 能够查找一个特定值
  • 我不关心的是将特殊字符替换为空格或任何东西,我需要得到的一个值应该是一个数字。在我使用的其他语言中,所讨论的正则表达式应该使用第1部分/第2部分将每个键/值分组到一个分组中,Perl是否也这样做?如果是这样,我如何将其放入地图中

    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;