1

有人可以帮我编写以下 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_-]*]*似乎不起作用

4

2 回答 2

0

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

http[s]?:\/\/www\.mywebsite\.com(?:\/[a-zA-Z-?=_&\d\s,$\.]+)+
于 2012-04-18T09:19:06.987 回答
0

部分答案,因为(正如其他海报所指出的那样),尚不清楚您要完成什么以及您的上下文是什么。如果您只想提取查询字符串参数 transaction_id 的值,那么这将为您完成这项工作:

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

在您的 OP 中,您有嵌套的括号。方括号仅用于字符类;你不能嵌套它们。

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

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

更新:

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

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

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

([^=]+)

捕获参数名称,而这部分

([^&]+)

捕获参数值(如果有)。

于 2012-04-18T13:52:04.483 回答