如何将正则表达式匹配到特定字符

时间:2015-10-07 19:11:45

标签: python regex

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)

,如何获得结果无/错误

2 个答案:

答案 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=([^&]*)'