【问题标题】:Regex match string beginning with ?code=以 ?code= 开头的正则表达式匹配字符串
【发布时间】:2014-08-15 09:02:41
【问题描述】:

我正在使用 python 和 django 来匹配我网站的 url。我需要匹配一个如下所示的网址: /company/code/?code=34k3593d39k

?code= 之后的部分是字母和数字的任意组合,任意长度。

到目前为止我已经尝试过了:

r'^company/code/(.+)/$'
r'^company/code/(\w+)/$'
r'^company/code/(\D+)/$'
r'^company/code/(.*)/$'

但到目前为止,没有人能理解这种表达方式。有任何想法吗?谢谢

【问题讨论】:

    标签: python regex django django-views django-urls


    【解决方案1】:

    如果您将最后一个 / 移到 ^ 之后,第一个模式将起作用:

    >>> import re
    >>> re.match(r'^/company/code/(.+)$', '/company/code/?code=34k3593d39k')
    <_sre.SRE_Match object at 0x0209C4A0>
    >>> re.match(r'^/company/code/(.+)$', '/company/code/?code=34k3593d39k').groups()
    ('?code=34k3593d39k',)
    >>>
    

    还要注意^ 是不必要的,因为re.match 从字符串的开头匹配:

    >>> re.match(r'/company/code/(.+)$', '/company/code/?code=34k3593d39k').groups()
    ('?code=34k3593d39k',)
    >>>
    

    【讨论】:

      【解决方案2】:

      code=34k3593d39kGET 参数,您不需要在 URL 模式中为其定义模式。您可以在视图下使用request.GET.get('code') 访问它。模式应该是:

      r'^company/code/$'
      

      使用,获取GET参数:

      def my_view(request):
          code = request.GET.get('code')
          print code
      

      查看documentation

      URLconf 搜索请求的 URL,就像普通的 Python 细绳。这不包括 GET 或 POST 参数,或域 名字。

      【讨论】:

      • 应该是code = request.GET.get("code")?因为我得到一个 UnboundLocalError,我在分配代码之前引用了代码
      • @user3749797 是的,一个简单的错字。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 2019-10-15
      • 2011-01-08
      • 2015-04-27
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      相关资源
      最近更新 更多