如何将正则表达式模式匹配到特定的ch

2024-05-23 17:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

line =abcsdfs?a=name&ab=fsdfsd&c=sfssf
pattern = '\?a=(.+?)&'
match_pattern = re.search(pattern, line)

我得到的结果是?a=name&,而match_pattern.group(1)name

但如果我删除了单词名,我就不会得到任何回报

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),如何得到结果None/error


Tags: namerenonesearchabmatchlinegroup
2条回答

请尝试以下操作:

pattern = '\?a=(.*?)&'

注意.+?匹配1或更多字符.*?匹配0或更多字符

当然,如果您试图做的是匹配URL查询字符串,那么regex是错误的工具。尝试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]]

应匹配除“&;以外的所有符号:

pattern = '\?a=([^&]*)'

相关问题 更多 >