【发布时间】:2012-04-19 05:56:16
【问题描述】:
在以下网址中:
(r'^videos/view/(?P<video_id>[^/]+)/$'
-
r'是什么意思/做什么? -
?P是什么意思/做什么? -
<video_id>是如何被正则表达式转义的?
换句话说,以上与以下有何不同:
'^/videos/view/[^/]+/$'
【问题讨论】:
在以下网址中:
(r'^videos/view/(?P<video_id>[^/]+)/$'
r' 是什么意思/做什么??P 是什么意思/做什么?<video_id> 是如何被正则表达式转义的?换句话说,以上与以下有何不同:
'^/videos/view/[^/]+/$'
【问题讨论】:
r'' 标记原始字符串,因此您不必双转义反斜杠。在这种情况下,没有必要,因为没有,但很多人总是为正则表达式这样做。
(?P<video_id>[^/]+) 是对捕获组video_id 的“命名”的正则表达式的 Python 扩展。在 Django 中,这意味着匹配作为关键字参数video_id 发送到视图;如果你做了view/([^/]+)/$,它将作为第一个位置参数发送。但是,在您的示例中,根本没有括号,这意味着视图不会得到任何参数!
【讨论】:
?P 是什么意思,或者这是您提到的非正则表达式“python 扩展”?
?P 只是表示它是一个命名组的语法的一部分。如果您忽略它,即(<video_id>[^/]+),它会在字符串中查找文字<video_id>。更多详情in the docs(搜索“?P