Python 如何仅匹配特定字符的正则表达式模式
我得到的结果是Python 如何仅匹配特定字符的正则表达式模式,python,regex,Python,Regex,我得到的结果是?a=name&和匹配模式。组(1)为name 但如果我删除单词名,我就不会得到任何回报 line =abcsdfs?a=name&ab=fsdfsd&c=sfssf pattern = '\?a=(.+?)&' match_pattern = re.search(pattern, line) 我得到的结果是?a=&ab=fsdfsd&和match\u模式。组(1)as&ab=fsdfsd 我怎样才能阻止它走得更远。我的意思是如果不匹配模式,如何得到结果无
?a=name&
和匹配模式。组(1)
为name
但如果我删除单词名,我就不会得到任何回报
line =abcsdfs?a=name&ab=fsdfsd&c=sfssf
pattern = '\?a=(.+?)&'
match_pattern = re.search(pattern, line)
我得到的结果是?a=&ab=fsdfsd&
和match\u模式。组(1)
as&ab=fsdfsd
我怎样才能阻止它走得更远。我的意思是如果不匹配模式,如何得到结果无/错误。组(1)您应该匹配除“&”之外的所有符号:
line =abcsdfs?a=&ab=fsdfsd&c=sfssf
pattern = '\?a=(.+?)&'
match_pattern = re.search(pattern, line)
请尝试以下方法:
pattern = '\?a=([^&]*)'
请注意,+?
匹配1或更多字符<代码>*?匹配0或更多字符
当然,如果您试图做的是匹配URL查询字符串,那么regex是错误的工具。尝试urlparse
模块:
pattern = '\?a=(.*?)&'
你需要一个更好的正则表达式,你就不会有这样的问题。我不太明白你的要求。我正在检查“a=”是否存在,如果它是空的,抛出一个错误。“ab”是下一个参数,后面跟着“c”参数。您的参数也可以,但我可以接受一个答案:(感谢另一个答案对最后一个组不起作用,“&”没有完成。正则表达式对最后没有“&”的姓氏/值对不起作用。我认为@user2661518正在解析URL,而名称/值可以在参数行的末尾。@Robᵩ 是的,它不会以&
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]]