我正在寻找一个可以解析以下形式的字符串的 perl 兼容正则表达式:
参数 1=值 1&...&参数 2=值 2&...
并仅提取 param1 和 param2 的值。但
- param2 可能在 param1 之前
- 可能没有 param1 或 param2
- param1 或 param2(或两者)可能有空值,即 param1=&...
我不会费心编写您自己的请求解析器。只需使用CGI.pm
.
/[?&]([^=]+)=([^=&]+)/g
这将匹配任何由 = 分隔的非 = 字符,并将它们放入 $1 和 $2 中。
或者...
my %argsHash = split(/=|&/, $args);
这会给你一个带有参数和值的散列,看起来效果很好,但是 CGI.pm 是一个更好的主意。
/(.*?)=(.*?)&/
循环和捕获$1
,$2
应该可以工作
If this is for C++, consider using an existing CGI library that parses the query parameters for you instead of reinventing that sort of thing yourself.
One such library is cgic
, a CGI library for C: http://www.boutell.com/cgic/#functions