我想在'user='之后从字符串'/?user=hello&user=man&user='中提取任何字符串。在这种情况下,我会得到'hello','man'和''。
,我被困在这里:
>>> import re
>>> s = '/?user=hello&user=man&user='
>>> re.findall("user=(.*)",s)
['hello&user=man&user=']如果user=的最后一次出现也以&结束,我将能够找到我想要的东西,但是有人知道如何在这个字符串中找到['hello', 'man', '']吗?
发布于 2012-09-29 14:26:08
我将删除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', '']}发布于 2012-09-29 14:25:34
尝试以下几点:
>>> s = '/?user=hello&user=man&user='
>>> re.findall(r"user=([^&]*)", s)
['hello', 'man', '']发布于 2012-09-29 14:26:24
是的,您需要做一个不是“贪婪”的正则表达式,并将最后一个user=作为您正在测试的(.*)的出现。让它更具体一些,user=(.*)?user=(.*)?user=(.*)将只匹配数据的第一次出现,而不是每个字符的巨大块。这就是为什么?操作符用正则表达式。
https://stackoverflow.com/questions/12653503
复制相似问题