Django - URL正则表达式模式

时间:2014-03-01 00:42:03

标签: python regex django

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

如果我想看到ID为1,3和4的标签,那么网址应该以134结尾。 我应该使用什么样的正则表达式模式,以便从像/.../ 134 /?这样的URL中获取列表[1,3,4]?

提前致谢

2 个答案:

答案 0 :(得分:0)

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

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

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

如果你需要正则表达式将每个数字返回为1美元,2美元,3美元等,我相信唯一的解决方案将是相当不优雅的,如下所示:

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

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

答案 1 :(得分:0)

您需要固定宽度的标签标识符(例如001003004),否则它是不明确的。如果你使用它,你可以捕获\d+,然后在视图中执行类似的操作:

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