Django URL匹配任何140个字符

时间:2016-02-18 18:04:36

标签: python regex django

我正在尝试将视图映射到主页/文本格式的任何URL,其中文本是任意140个字符(包括空格)。有一个简单的方法吗?我试过了:

url(r'^home/(?P<text>[\w]+)$',....),

但是这不允许空格,也没有对长度施加任何限制。

任何建议都会受到赞赏,因为我在文档中找不到任何相似内容并且是Django的新手

1 个答案:

答案 0 :(得分:3)

  

文本是任何140个字符(包括空格)

匹配单词和空格

您可以添加{140}来指定长度,并添加\s以匹配空格到您的网址正则表达式:

url(r'^home/(?P<text>[\w\s]{140})$',....),

以下是如何测试它的,我已将其缩短为10长度以便轻松实现:

>>> import re
>>> regex = r'^home/(?P<text>[\w\s]{10})$'
>>> re.search(regex, "home/1234567890").group(1)
'1234567890'
>>> re.search(regex, "home/12345 7890").group(1)
'12345 7890'
>>> re.search(regex, "home/ abcd fghi").group(1)
' sbcd fghi'

如果你超过了长度,例如

>>> re.search(regex, "home/ abcd fghizzz")
# Doesn't match, returns None

如果你低于长度,例如

>>> re.search(regex, "home/ abc")
# Doesn't match, returns None

匹配&#34;任何事情&#34; (对于网址不实用,因为例如?#

如果你想匹配几乎任何东西:

>>> regex = r'^home/(?P<text>(.){10})$'
>>> re.search(regex, "home/1@#$%^& &*").group(1)
'1@#$%^& &*'
>>> re.search(regex, "home/1@bcd^& &*").group(1)
'1@bcd^& &*'