Python:无法理解正则表达式

时间:2013-02-01 02:04:18

标签: python regex django

我正在浏览django教程,虽然现在几乎所有东西看起来都非常清楚,但在匹配网址时我无法理解正则表达式:

r'^(?P<poll_id>\d+)/$

(?P<poll_id>\d+)做了什么?

我理解在从"34/"剥离"polls/34/"之后,正在调用polls.url并且正在寻找关键字urlpatterns,但{我是怎么做的} {1}}获取此值poll_id

我只知道一点正则表达式,所以这就是为什么我可能难以阅读。 此外,以下是我用于此问题的参考:Tutorial Part3

2 个答案:

答案 0 :(得分:4)

这是一个将poll_id(一个数字)作为变量的正则表达式。

相应的观点是:

def detail(request, poll_id):
    return HttpResponse("You're looking at poll %s." % poll_id)

现在,当您转到example.com/polls/34/时,它知道您正在寻找poll号码34,并将其作为poll_id带入视图。

因此,在您看来,poll_id = 34。这允许您显示或操纵此特定轮询。

本章中正则表达式的基本要点是允许您查看大量特定民意调查,而无需为每个民意调查创建明确的URL。

要澄清一下,这个正则表达式是说取任意数字\d+,将其保存为poll_id,然后使用poll_id继续此视图。

答案 1 :(得分:2)

支持Dan Hoerst的回答:是的,django使用正则表达式来提取视图的poll_id。其下面是:

import re 
r = re.compile(r'^poll/(?P<poll_id>\d+)/$')
r.match('poll/132/').groups() # ('132',)