我想从字符串'/?user=hello&user=man&user='
中提取'user='
后的任何字符串。在这种情况下,我会'hello'
,'man'
和''
。
我被困在这里:
>>> import re
>>> s = '/?user=hello&user=man&user='
>>> re.findall("user=(.*)",s)
['hello&user=man&user=']
如果最后一次出现user=
也以 &
结尾,我将能够找到我想要的东西,但是有人知道如何在这个字符串中找到['hello', 'man', '']
吗?
我会放弃re
并使用为此使用的工具:
from urlparse import urlsplit, parse_qs
s = '/?user=hello&user=man&user='
parse_qs(urlsplit(s).query, keep_blank_values=True)
{'user': ['hello', 'man', '']}
尝试以下操作:
>>> s = '/?user=hello&user=man&user='
>>> re.findall(r"user=([^&]*)", s)
['hello', 'man', '']
是的,您需要创建一个不"贪婪"的正则表达式,并将最后一个user=
作为您正在测试的 (.*) 的出现次数。使其更具体user=(.*)?user=(.*)?user=(.*)
仅匹配数据的第一次出现,而不是每个字符的大量。那是什么?运算符在正则表达式中执行。