正则表达式匹配多个无序捕获组

时间:2018-06-25 11:45:25

标签: regex nginx

我在网上看到了一些解释,但是我不完全理解它们。 我有一个无序的uri,也可以有可选参数,调用时它可能会也可能不是uri的一部分。 形式

/getthis?servicename=aservice&userid=123555712345&something=value&anotherthing=novalue

/getthis?servicename=aservice&userid=123555712345

参数servicenameuserid将始终存在,但是something(以及其他参数/​​值)可能会也可能不会添加到uri。

我尝试使用命名组来捕获感兴趣的每个参数部分,并通过执行以下操作来处理出现或不出现的url参数:

^(?<a>servicename=.*)&(?<b>userid=(123(555|666|777|...)\d+))(?<c>\&?.*)$

(userid有几组需要匹配的数字,此匹配影响如何修改servicename的值。)

但是我不知道如何确保捕获组以任何顺序出现,它们将被解析。 请有人能告诉我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

正则表达式可能不是您所处情况的最佳解决方案。如果您可以使用感兴趣的语言来使用url库,那将是最简单的,但是否则,最好在&处拆分URL,然后在=处拆分结果参数以获取对。然后处理参数键/值。