使用正则表达式拆分URL

时间:2013-05-30 18:59:31

标签: python regex django

我正在尝试使用正则表达式将URL中的两个输入添加到视图中。

我的urls.py行看起来像这样

(r'^blog/(?P<match>.+)/', 'blog.views.blog'),

这是我的观点

def blog(request, match):
    pieces = match.split('/')

但是,如果我的网址是“root.com/blog/user/3”pieces,则只返回[user]

为了pieces to return [user],[3]`必须在我的网址中添加一个尾部斜杠:“root.com/blog/user/3/”

据我所知,根据我的Python shell,第一个网址应该已经返回[user],[3]

我错过了什么吗?或者Django实际上是否将字符串与Python分开?

1 个答案:

答案 0 :(得分:3)

问题是你的正则表达式与整个网址不匹配,因为模式以斜杠结尾,而你的网址没有。

但是,由于最后没有明确$的正则表达式匹配字符串的前缀,如果你看一下你的match变量,你会注意到它是user/,而不是您所期望的user/3

更新 :(更详细的解释)

r'^blog/.*/'匹配[blog/user/][blog/user/]3(方括号用于表示实际匹配的部分)。

如果您尝试r'^blog/.*/$',您会注意到blog/user/3根本不匹配,因为最后没有斜线。