【发布时间】:2011-12-20 19:06:52
【问题描述】:
我的urls.py 中有以下正则表达式 (regex),我想知道它的含义。特别是正则表达式的(?P<category_slug> 部分。
r'^category/(?P<category_slug>[-\w]+)/$
【问题讨论】:
标签: python regex django capturing-group
我的urls.py 中有以下正则表达式 (regex),我想知道它的含义。特别是正则表达式的(?P<category_slug> 部分。
r'^category/(?P<category_slug>[-\w]+)/$
【问题讨论】:
标签: python regex django capturing-group
(?P<category_slug>) 创建一个名为 category_slug 的匹配组。
正则表达式本身匹配以category/ 开头的字符串,然后是字母数字字符的组合,短划线- 和下划线_,后跟斜杠。
正则表达式接受的示例 URL:
【讨论】:
category_slut 的关键字参数
re 模块提供了匹配表达式的函数。如果文本与正则表达式匹配,它们会返回一个 Match 对象。然后match.group('category_slug')返回组的内容('foo'、'foo_bar-baz'等)。
(?P<name>regex) - 圆括号将它们之间的正则表达式分组。它们捕获与它们内部的正则表达式匹配的文本,这些文本可以由尖括号之间的名称引用。名称可以由字母和数字组成。
【讨论】:
在 django 中,命名的捕获组作为关键字参数传递给您的视图。
未命名的捕获组(只是一个括号)作为参数传递给您的视图。
?P 是一个命名的捕获组,而不是一个未命名的捕获组。
http://docs.python.org/library/re.html
(?P<name>...)类似于正则括号,但子字符串 组匹配的可以在常规的其余部分中访问 通过符号组名 name 表达。组名必须有效 Python 标识符,每个组名只能定义一次 在正则表达式中。符号组也是编号的 组,就好像该组没有命名一样。所以名为 id 的组在 下面的例子也可以引用为编号组 1。
【讨论】:
3.6 版中的新功能。
(?P<name>...)
类似于常规括号,但组匹配的子字符串可通过符号组名称访问。组名必须是有效的 Python 标识符,并且每个组名只能在正则表达式中定义一次。符号组也是一个编号组,就好像该组没有命名一样。
从Python3Regex复制粘贴
【讨论】:
在模式匹配中, 使用此模式传递字符串
(?P<username2>[-\w]+)
这是整数值
(?P<user_id>[0-9]+)
【讨论】: