line =abcsdfs?a=name&ab=fsdfsd&c=sfssf
pattern = '\?a=(.+?)&'
match_pattern = re.search(pattern, line)
我的结果为?a=name&
,而match_pattern.group(1)
为name
但是,如果我删除单词名称,我没有收到NONE返回?
line =abcsdfs?a=&ab=fsdfsd&c=sfssf
pattern = '\?a=(.+?)&'
match_pattern = re.search(pattern, line)
我的结果为?a=&ab=fsdfsd&
,match_pattern.group(1)
为&ab=fsdfsd
我怎样才能阻止它走得更远。我的意思是如果做match_pattern.group(1)
答案 0 :(得分:4)
请改为尝试:
pattern = '\?a=(.*?)&'
请注意.+?
匹配 1 或更多字符; .*?
匹配 0 或更多字符。
当然,如果你要做的是匹配URL查询字符串,那么正则表达式是错误的工具。试试urlparse
模块:
import urlparse
url = 'abcsdfs?a=name&b=&ab=fsdfsd&c=sfssf'
url = urlparse.urlsplit(url)
qs = url.query
qs = urlparse.parse_qs(qs, keep_blank_values=True)
print [qs['a'][0], qs['b'][0], qs['c'][0]]
答案 1 :(得分:2)
您应该匹配除'&':
之外的所有符号pattern = '\?a=([^&]*)'