用于解析请求参数的正则表达式

时间:2009-05-31 21:06:43

标签: regex pcre

我正在寻找一个可以解析表单字符串的perl兼容正则表达式:

参数1 =值1&安培; ...&安培; param2的=值2&安培; ...

仅提取param1和param2的值。但

  1. param2可以在param1之前
  2. 可能没有param1或param2
  3. param1或param2(或两者)可能有空值,即param1 =& ...

4 个答案:

答案 0 :(得分:2)

我不打算编写自己的请求解析器。只需使用CGI.pm

答案 1 :(得分:2)

/[?&]([^=]+)=([^=&]+)/g

这将匹配由=分隔的任何非=字符,并将它们放入$ 1和$ 2。

...或

my %argsHash = split(/=|&/, $args);

这将为您提供一个参数和值的哈希,看起来效果很好,但CGI.pm是一个更好的主意。

答案 2 :(得分:1)

/(.*?)=(.*?)&/循环播放并抓取$1$2应该有效

答案 3 :(得分:0)

如果这是针对C ++的,请考虑使用现有的CGI库来为您解析查询参数,而不是自己重新发明这类事物。

一个这样的库是cgic,一个用于C的CGI库:http://www.boutell.com/cgic/#functions