在django url

时间:2016-10-10 22:11:05

标签: python regex django

我有以下网址 http://localhost:8000/api/package/printf/release/v0.0.1

我需要在最后捕获版本。什么是正确的方法。我现在的url正则表达式是

/package/(?P<pk>[a-z]+)/release/(?P<version[a-z]+)/$

语义版本应作为单个参数传递,而不是作为具有majorminor版本等的多个int作为不同参数传递。

2 个答案:

答案 0 :(得分:1)

您可以依赖于否定字符类[^/](匹配/以外的任何字符),并通过添加/(1或0)使最后?成为可选项之后的量词:

/package/(?P<pk>[^/]+)/release/(?P<version>[^/]+)/?$

请参阅regex demo

答案 1 :(得分:1)

让我觉得你很亲密。只需稍微调整你的正则表达式:

/package/(?P<pk>[a-z]+)/release/(?P<version>v\d{1,2}\.\d{1,2}\.\d{1,2})/?$

这将匹配任何具有三位数的版本,每个版本都是1或2个数字。例如:

v0.0.1    # True
v1.0.10   # True
v99.99.99 # True
v1.0      # False

根据您的要求,您可以根据您的要求进行调整。我只根据你上面的网址猜测了一下。