我需要匹配url中的url编码空格,即%20。
我的网址就像是
http://domain/something/hello%20world
这是我的网址配置和视图
url(r'^regtest/(\w+[%20]?\w+)', views.regView)
查看:
def regView(request, x, y=None):
print x, 'and', y
return HttpResponse('+OK')
以下是我从网址获得点击时的日志
http://127.0.0.1:8000/regtest/hello%20world
hello and None
[13/Jan/2014 02:12:31] "GET /regtest/hello%20world HTTP/1.1" 200 3
答案 0 :(得分:1)
模式[%20]
匹配%
,2
或0
。
使用以下正则表达式来匹配单词字符(\w
)或(|
),%20
:
r'^regtest/((?:\w|%20)+)'
>>> import re
>>> matched = re.search(r'regtest/((?:\w|%20)+)', 'regtest/hello%20world')
>>> matched.group(1)
'hello%20world'
<强>更新强>
%20
由Django解释并解码为空格()。因此,您应该匹配空格而不是
%20
。
r'^regtest/([\w\s]+)'