这不应该接受两种不同的模式,例如/hello/
和/hello/123/
吗?第一个似乎是一个全能的。
(r'^(?P<org>\S+)/$', 'path.to.view'),
(r'^(?P<org>\S+)/(?P<id>\d{3})/$', 'path.to.view'),
我真正想要找到的是一个slu and和一些不同的长度(虽然它上面只显示三个字符):/hello-slug-name/123/
或只是/hello-slug-name/
编辑:
为了后人的一个注释:在下面的两个答案中,两者都非常有助于理解这里发生的事情。我正在将我最终用于实现的答案作为“正确”使用绿色勾号,但两者都非常有见地和有帮助。
答案 0 :(得分:3)
第一个正则表达式匹配任何由非空白字符组成的字符串,并以斜杠结尾。因此它匹配您的字符串。
第二个正则表达式匹配一个字符串,该字符串由非空白字符组成,后跟斜杠,后跟三个数字,后跟另一个斜杠。
从你的例子中我收集的是“变长的数量”,你的意思是“可能为零(在这种情况下斜线也会掉落)”。一个涵盖所有这些案例的正则表达式将是
^(?P<org>\S+?)/(?:(?P<id>\d+)/)?$
答案 1 :(得分:2)
尝试使用:
(r'^(?P<org>[-A-Za-z0-9_]+)/$', 'path.to.view'),
(r'^(?P<org>[-A-Za-z0-9_]+)/(?P<id>\d+)/$', 'path.to.view'),