r''有什么区别?和r' ^ $'在Django URL的正则表达式?

时间:2014-10-10 06:09:24

标签: python regex django

我有一个urls.py文件,其中包含如下所示的行:

urlpatterns = patterns('', 
    url(r'', include('my_module.urls'))
)

为什么当我将中间行更改为url(r'^$', include('my_module.urls'))时,它不起作用?

这个正则表达式是否为相同(空白)值?

2 个答案:

答案 0 :(得分:2)

每当Django遇到include()django.conf.urls.include())时,它会删除与该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf以进行进一步处理。但$表示网址在此处结束,因此在$之后没有任何内容可以删除和发送。

有关详情,请点击here

答案 1 :(得分:0)

我认为这不是Django问题,而是正则表达式问题。

r''是一个空字符串,它匹配每个字符串。

由于^匹配字符串的开头且$匹配字符串的结尾,因此r'^$'仅匹配空字符串。

>>> re.match(r'', 'abc123')
<_sre.SRE_Match object at 0x1003c4920>
>>> re.match(r'', '')
<_sre.SRE_Match object at 0x1003c4988>
>>> re.match(r'^$', 'abc123')
>>> re.match(r'^$', '')
<_sre.SRE_Match object at 0x1003c4920>