带问号文字的Python正则表达式
我正在使用Django的URLconf,我将收到的URL是/?code=authenticationcode
我想使用来匹配该URL r'^\?code=(?P<code>.*)$'
,但它不起作用。
然后我发现这是“?”的问题。
因为我尝试/aaa?aaa
使用r'aaa\?aaa' r'aaa\\?aaa'
even 进行匹配r'aaa.*aaa'
,但都失败了,但是当它是“ +”或任何其他字符时,它可以工作。
如何匹配“?”,有什么特别之处吗?
回答:
>>> s="aaa?aaa">>> import re
>>> re.findall(r'aaa\?aaa', s)
['aaa?aaa']
/aaa?aaa
你的网址内部不匹配的原因是因为?开始新的GET查询。
因此,URL的可匹配部分只能达到第一个“ aaa”。其余的“?aaa”是一个新的查询字符串,由“?”分隔 标记,其中包含作为“ GET”参数传递的变量“ aaa”。
你可以在此处对变量进行编码,然后再将其放入URL。的编码形式?为%3F。
你也不应该完全匹配GET查询,例如/?code=authenticationcode
使用正则表达式。相反,请/
使用来匹配你的网址r'^$'
。Django会将变量code
作为GET参数传递给request
对象,你可以使用在视图中获取该对象request.GET.get('code')
。
以上是 带问号文字的Python正则表达式 的全部内容, 来源链接: utcz.com/qa/414302.html