我有以下网址
http://localhost:8000/api/package/printf/release/v0.0.1
我需要在最后捕获版本。什么是正确的方法。我现在的url正则表达式是
/package/(?P<pk>[a-z]+)/release/(?P<version[a-z]+)/$
语义版本应作为单个参数传递,而不是作为具有major
和minor
版本等的多个int作为不同参数传递。
答案 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
根据您的要求,您可以根据您的要求进行调整。我只根据你上面的网址猜测了一下。