例如,在
中r'^articles/(\d{4})/$', 'news.views.year_archive'
我理解除(\ d {4})之外的所有正则表达式。四位数,但为什么大括号?
(python / django示例)
另一个例子:
r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'
答案 0 :(得分:3)
大括号用于分组,可用于提取匹配的子集。它们也可用于指示子集重复(或是可选的),尽管你的正则表达式不会那样使用它们。
请参阅http://www.regular-expressions.info/brackets.html
根据用法,我打赌与此URL匹配的代码使用括号来提取年份,以便可以在查询中使用它。请参阅Match object
的组功能Django自动提取分组的子表达式并将其用作视图的参数:
视图会将HttpRequest作为其第一个参数传递,并将正则表达式中捕获的任何值作为剩余参数传递。
...
对/articles/2005/03/
的请求将与列表中的第三个条目匹配。 Django会调用函数news.views.month_archive(request, '2005', '03')
。
答案 1 :(得分:2)
除了将正则表达式的一部分组合在一起外,圆括号还会创建“反向引用”。 backreference存储由括号内的正则表达式部分匹配的字符串部分。