Skip to main content
 首页 » 编程设计

python之匹配任何 140 个字符的 Django URL

2024年08月23日28duanxz

我正在尝试将 View 映射到 home/text 形式的任何 URL,其中文本是任意 140 个字符(包括空格)。有没有简单的方法可以做到这一点?我试过:

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

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

任何建议将不胜感激,因为我在文档中找不到任何类似的东西并且是 Django 的新手

请您参考如下方法:

Where text is any 140 characters (including spaces)

匹配单词和空格

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

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 

匹配“任何东西”(对于 URL 不实用,因为例如 ? 和 #)

如果您想匹配任何东西:

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