【问题标题】:How django's url regex workdjango 的 url 正则表达式如何工作
【发布时间】:2012-04-19 05:56:16
【问题描述】:

在以下网址中:

(r'^videos/view/(?P<video_id>[^/]+)/$'
  • r' 是什么意思/做什么?
  • ?P 是什么意思/做什么?
  • &lt;video_id&gt; 是如何被正则表达式转义的?

换句话说,以上与以下有何不同:

'^/videos/view/[^/]+/$'

【问题讨论】:

    标签: python regex django


    【解决方案1】:

    r'' 标记原始字符串,因此您不必双转义反斜杠。在这种情况下,没有必要,因为没有,但很多人总是为正则表达式这样做。

    (?P&lt;video_id&gt;[^/]+) 是对捕获组video_id 的“命名”的正则表达式的 Python 扩展。在 Django 中,这意味着匹配作为关键字参数video_id 发送到视图;如果你做了view/([^/]+)/$,它将作为第一个位置参数发送。但是,在您的示例中,根本没有括号,这意味着视图不会得到任何参数!

    【讨论】:

    • 谢谢,实际的?P 是什么意思,或者这是您提到的非正则表达式“python 扩展”?
    • ?P 只是表示它是一个命名组的语法的一部分。如果您忽略它,即(&lt;video_id&gt;[^/]+),它会在字符串中查找文字&lt;video_id&gt;。更多详情in the docs(搜索“?P
    猜你喜欢
    • 2017-07-14
    • 2011-03-22
    • 2013-07-26
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多