这个django正则表达式意味着什么?`?P`

loc*_*boy 66 python regex django capturing-group

我在urls.py中有以下正则表达式,我想知道这意味着什么.特别(?P<category_slug>是正则表达式的一部分.

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

Yuj*_*ita 67

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

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

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

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

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


Mar*_*cus 49

(?P<name>regex) - 圆括号将它们之间的正则表达式组合在一起.它们捕获与其中正则表达式匹配的文本,可以通过尖括号之间的名称引用.名称可以包含字母和数字.

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

  • http://docs.python.org/library/re.html将是一个更好的参考网址. (8认同)

Thi*_*ter 20

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

正则表达式本身匹配以category/字母开头的字符串,然后混合使用字母数字字符,短划线-和下划线_,后跟一个尾部斜杠.

正则表达式接受的示例网址:

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

  • @ThiefMaster:有史以来最好的错字 (34认同)
  • 我不熟悉django,但最可能的行为是view函数将收到一个名为`category_slut的关键字参数 (20认同)
  • @ThiefMaster为category_slut +1 (6认同)
  • @ThiefMaster你的评论是我的一天. (3认同)