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