这个Django正则expression式是什么意思? `?P`

我在我的urls.py中有以下正则expression式,我想知道它是什么意思。 特别是正则expression式的(?P<category_slug>部分。

r'^category/(?P<category_slug>[-\w]+)/$

(?P<name>regex) – 圆括号组合它们之间的正则expression式。 它们捕获由正则expression式匹配的文本,可以通过尖括号之间的名称引用它们。 名字可能由字母和数字组成。

复制粘贴: http : //www.regular-expressions.info/refext.html

在Django中,命名捕获组作为关键字parameter passing给您的视图。

未命名的捕获组(仅作为括号)作为parameter passing给您的视图。

?P是一个有名的捕获组,而不是一个未命名的捕获组。

http://docs.python.org/library/re.html

(?P<name>...)类似于正则括号,但是匹配的子string可以在正则expression式的其余部分通过符号组名称来访问。 组名称必须是有效的Python标识符,每个组名称只能在正则expression式中定义一次。 一个象征性的小组也是一个有编号的小组,就像这个小组没有被命名一样。 所以在下面的例子中,名为id的组也可以被引用为编号组1。

(?P<category_slug>)创build一个名为category_slug的匹配组。

正则expression式本身匹配一个以category/开始的string,然后是字母数字字符,破折号和下划线_ ,然后是斜线。

正则expression式接受的示例URL:

  • 类别/富/
  • 类别/ foo_bar这样的名称巴兹/
  • 类别/ 12345 /
  • 类别/ q1e2_asdf /