使用正则表达式查找"hello",'man'和'/?user=hello&user=man&user='



我想从字符串'/?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=(.*)仅匹配数据的第一次出现,而不是每个字符的大量。那是什么?运算符在正则表达式中执行。

最新更新