82

我有以下正则表达式(正则表达式),urls.py我想知道它的含义。特别是(?P<category_slug>正则表达式的部分。

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

5 回答 5

86

在 django 中,命名的捕获组作为关键字参数传递给您的视图。

未命名的捕获组(只是一个括号)作为参数传递给您的视图。

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

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

(?P<name>...)与正则括号类似,但组匹配的子字符串可通过符号组名在正则表达式的其余部分中访问。组名必须是有效的 Python 标识符,并且每个组名只能在正则表达式中定义一次。符号组也是一个编号组,就好像该组没有命名一样。所以下例中名为 id 的组也可以引用为编号组 1。

于 2011-11-03T00:32:22.627 回答
61

(?P<name>regex)- 圆括号将它们之间的正则表达式分组。它们捕获与它们内部的正则表达式匹配的文本,这些文本可以通过尖括号之间的名称引用。名称可以由字母和数字组成。

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

于 2011-11-03T00:24:44.663 回答
25

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

正则表达式本身匹配一个category/以字母数字字符、破折号-和下划线开头的字符串_,后跟一个斜杠。

正则表达式接受的示例 URL:

  • 类别/foo/
  • 类别/foo_bar-baz/
  • 类别/12345/
  • 类别/q1e2_asdf/
于 2011-11-03T00:22:47.867 回答
-2

3.6 版中的新功能。

(?P<name>...) 类似于常规括号,但组匹配的子字符串可通过符号组名称访问。组名必须是有效的 Python 标识符,并且每个组名只能在正则表达式中定义一次。符号组也是一个编号组,就好像该组没有命名一样。

从Python3Regex复制粘贴

于 2018-05-20T10:40:20.307 回答
-2

在模式匹配中,使用此模式传递字符串

(?P<username2>[-\w]+)

这是整数值

(?P<user_id>[0-9]+)
于 2019-11-27T08:03:04.987 回答