gpt4 book ai didi

regex - URL重写中的正则表达式可以按任何顺序匹配Querystring参数值吗?

转载 作者:行者123 更新时间:2023-12-01 09:24:53 24 4
gpt4 key购买 nike

许多URL重写实用程序都允许进行正则表达式匹配。无论它们出现的顺序如何,我都需要一些URL与几个主要的querystring参数值进行匹配。例如,让我们考虑一个URL,它具有两个关键参数 ID = Lang = ,并且没有特定的顺序,也许还有一些其他非关键参数散布。

以任何顺序与关键参数匹配的示例URL:

  • http://www.example.com/SurveyController.aspx吗? ID = 500&Lang = 4
  • http://www.example.com/SurveyController.aspx吗? Lang = 4&ID = 500

  • 也许有一些散布的非关键参数:
  • http://www.example.com/SurveyController.aspx吗? Lang = 3&ID = 1 &misc = 3&misc = 4或
  • http://www.example.com/SurveyController.aspx吗? ID = 1 &misc = 4& Lang = 3
  • http://www.example.com/SurveyController.aspx?misc=4& Lang = 3&ID = 1

  • 是否有一个好的正则表达式模式可以按任何顺序与querystring参数值匹配,还是最好重复一些规则,或者通常我应该寻找其他方法吗?

    注意:也将使用括号捕获主要查询字符串值,即ID =(3)&Lang =(500)并替换为目标URL,但这不是问题的重点。

    最佳答案

    我建议将查询字符串解析成一个字典并从那里开始工作,但是如果您想使用正则表达式,则可以使用交替+重复以任何顺序进行匹配(而无需内联所有可能的序列)。 Python示例:

    >>> import re
    >>> p = re.compile(r'(?:[?&](?:abc=([^&]*)|xyz=([^&]*)|[^&]*))+$')
    >>> p.findall('x?abc=1&jjj=2&xyz=3')
    [('1', '3')]
    >>> p.findall('x?abc=1&xyz=3&jjj=2')
    [('1', '3')]
    >>> p.findall('x?xyz=3&abc=1&jjj=2')
    [('1', '3')]

    关于regex - URL重写中的正则表达式可以按任何顺序匹配Querystring参数值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732211/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com