2012-04-18 157 views
0

有人可以幫我寫下面的URL的正則表達式嗎? 我想要一個正則表達式來匹配整個URL。網址格式會是這樣的。正則表達式的URL

https://www.mywebsite.com/us/cgi-bin/binary?cmd=_payment-option&transaction_id=8768JKHKJG19322&account_number=6UN85941RH525783L&transaction_date=Apr 12, 2012&transaction_amount=-$11.00&ccode=USD&act_id=6K6218756F7819322&counterparty=Pretty Flower Florist&initiated_page=_login&go_Ah9w8keNJ8YRLMkAMTS_Izeq0br1CF6OVtGv69WzOo8AjgDgGIiBetMG-lK&Go_Actions

這是我這麼遠,但只能做到第一「&」

http[s]*:\/\/www.[a-zA-Z0-9.]*mywebsite.[a-zA-Z]*[/]*[a-zA-Z0-9]*[/]*cgi-bin[/]*binary[?]*cmd=[_a-z\-]*[[\&][a-zA-Z0-9_-]*[=][a-z ,A-Z0-9_-]*]*

我怎麼能重複模式&transaction_id=8768JKHKJG19322它匹配?

[[\&][a-zA-Z0-9_-]*[=][a-z ,A-Z0-9_-]*]*似乎並沒有工作

+2

你可能想要添加你想要實現的功能... – Stefan 2012-04-18 09:18:44

回答

0

這是不是很強大的正則表達式,但它應該給你的想法 - 重複共同的模式。

http[s]?:\/\/www\.mywebsite\.com(?:\/[a-zA-Z-?=_&\d\s,$\.]+)+ 
0

的部分答案,因爲(其他海報指出),目前還不清楚你想要什麼來完成的,和你的上下文。如果你只是想拔出查詢字符串參數TRANSACTION_ID的價值,那麼這將做的工作適合你:

[&?]transaction_id=([^&]+) 

在你的OP,你有嵌套括號。括號僅用於字符類;你不能嵌套它們。

而是使用括號。圓括號用於兩件事:指示嵌套或分組,並將值「捕獲」到程序中的match []數組中。

至於識別查詢字符串的其餘部分,你不應該匹配嵌入空格,如你的例子&counterparty=Pretty Flower Florist;你應該期望空格被編碼爲+或%20。

更新:

此正則表達式片段將匹配您輸入網址的查詢字符串部分:

([&?]([^=]+)(=([^&]+))?)* 

這不是查詢字符串規則精確的重述,但你可以用它捕獲參數名稱和值。這部分

([^=]+) 

拍攝參數的名稱,而這部分

([^&]+) 

捕捉參數值,如果有的話。

+0

我想編寫一個正則表達式來匹配像'&transaction_id = 8768JKHKJG19322'這樣的字符串。這裏會有許多重複的字段。 &PAR1 =值1&PAR2 =值2&PAR3 =值3。所以一個匹配重複模式的正則表達式就是我正在尋找的。 – cppcoder 2012-04-19 10:15:21