2009-05-31 64 views
1

我要尋找一個Perl兼容的正則表達式,將解析形式的字符串:正則表達式解析請求參數

參數1 =值& ...... &參數2 =值2 & ......

和提取只有param1和param2的值。但

  1. 參數2可能先於參數1
  2. 可能沒有參數1或參數2
  3. 參數1或參數2(或兩者)可能具有空值,即參數1 = & ...
+0

改變了你的變量從Perl來PCRE,作爲pcres唯一真正關係Perl是名字。除此之外,關於它們幾乎沒有任何關於perl的信息。詢問perl的答案會給你一個perl的答案,而且它不會/與PCRE一起工作。 – 2009-05-31 22:46:47

+0

http://stackoverflow.com/questions/755168/perl-myths/933070#933070 將此神話添加到神話factoid列表中。 – 2009-05-31 23:05:29

回答

1

/(.*?)=(.*?)&/循環和捕獲$1$2應該工作

+0

單個。匹配任何一個字符,如果參數和值都是單個字符,這將工作。 – Copas 2009-05-31 21:23:20

+0

是啊,不知何故*失去了當然我的意思是(。*?)懶惰評估的問號 – ennuikiller 2009-05-31 22:52:20

2

我不會打擾編寫自己的請求解析器。只需使用CGI.pm

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

這將匹配由an =分隔的任何非= =字符,並將它們放入$ 1和$ 2中。

或...

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

這會給你帶參數和值出現運作良好的哈希,但CGI.pm是都圍繞着一個更好的主意。

0

如果這是針對C++的,請考慮使用現有的CGI庫來爲您解析查詢參數,而不是自己重新發明這類事情。

這種庫之一是cgic,針對c CGI庫:http://www.boutell.com/cgic/#functions