Python re的可选命名组
在Django的URL配置中,我需要一个可选的命名组。如果没有传递参数,这样的配置会引发404错误:
r'^list_cv/(?P<category>[\d]+)?/$'
怎么才能创建一个可选的命名组呢?
3 个回答
4
我发现,为没有命名组的 URL 创建一个单独的 URL 模式会更容易理解。
url(r'^list_cv/$', my_view),
url(r'^list_cv/(?P<category>[\d]+)/$', my_view),
4
最后的斜杠应该是可选正则表达式的一部分,正则表达式应该像这样:
r'^list_cv/(?:(?P<category>[\w+])?/)$'
不过我没有测试过这个。
9
对我来说是这样工作的:
r'^list_cv/(?:(?P<category>[\w+])/)?$'
编辑:
和原始答案相比,主要的区别在于重复匹配的部分。
(?:(?P<category>[\w+])/)?$
和原始的 (?:(?P<category>[\w+])?/)$
。