URL的正则表达式

时间:2012-04-18 09:12:38

标签: regex

有人可以帮我编写以下网址的正则表达式吗? 我想要一个正则表达式匹配整个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 个答案:

答案 0 :(得分:0)

这不是非常强大的正则表达式,但它应该给你一个想法 - 重复常见的模式。

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

答案 1 :(得分:0)

部分答案,因为(正如其他海报所说),目前尚不清楚你想要完成什么,以及你的背景是什么。如果您只想提取查询字符串参数transaction_id的值,那么这将为您完成工作:

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

在你的OP中,你有嵌套的括号。括号仅用于角色类;你无法嵌套它们。

相反,请使用括号。括号用于两件事:表示嵌套或分组,以及将值“捕获”到程序中的match []数组中。

至于识别查询字符串的其余部分,您不必匹配嵌入空格,如示例&counterparty=Pretty Flower Florist中所示;你应该期望空格被编码为+或%20。

<强>更新

此正则表达式片段将匹配输入网址的查询字符串部分:

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

这不是对查询字符串规则的精确重述,但您可以使用它来捕获参数名称和值。这部分

([^=]+)

捕获参数名称,此部分

([^&]+)

捕获参数值(如果有)。