正则表达式的URL

正则表达式的URL

问题描述:

有人可以帮我写下面的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

这是不是很强大的正则表达式,但它应该给你的想法 - 重复共同的模式。

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

的部分答案,因为(其他海报指出),目前还不清楚你想要什么来完成的,和你的上下文。如果你只是想拔出查询字符串参数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