【问题标题】:Django - URL regex patternDjango - URL 正则表达式模式
【发布时间】:2014-03-01 00:42:02
【问题描述】:

我有一个名为 Tag 的模型,我的数据库中有很多这样的模型。 我想通过以下方式通过 URL 在页面中访问它们:

如果我想查看 id 为 1、3 和 4 的标签,那么 URL 应该以 134 结尾。 我应该使用什么正则表达式模式才能从 /.../134/ 之类的 URL 中获取列表 [1,3,4]?

提前致谢

【问题讨论】:

    标签: python regex django


    【解决方案1】:

    您需要固定宽度的标签标识符(例如 001003004),否则会产生歧义。如果你使用它,你可以捕获\d+,然后在视图中做这样的事情:

    >>> import re
    >>> tag_string = "001003004"
    >>> regex = re.compile("\d{3}")
    >>> tag_list = map(int, regex.findall(tag_string))
    [1, 3, 4]
    

    【讨论】:

      【解决方案2】:

      如果 A.) URL 中的连续数字是任意的,并且 B.) 您需要将每个数字分别返回到您的代码,则仅使用正则表达式可能会很困难/不可能。

      如果你只需要获取数字字符串(然后在你的代码中解析它),你可以使用这个: /(\d+)/(如果 / 用作分隔符,请转义)

      然后你可以在 $1 上运行一些字符串操作

      如果您需要正则表达式将每个数字返回为 $1、$2、$3 等,我相信唯一的解决方案是相当不雅的,像这样:

      /(\d)(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?/
      

      ...在这种情况下,它最多支持 URL 中的 10 个标签。

      【讨论】:

        猜你喜欢
        • 2015-02-01
        • 2011-03-22
        • 2013-07-26
        • 2014-07-08
        • 1970-01-01
        • 2014-10-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多