首页 > 解决方案 > 为什么我的 python 正则表达式模式不匹配整个字符串?

问题描述

我希望将 url 字符串与我的正则表达式模式匹配:r'.+'。我希望这种模式能够完全匹配 url 字符串,但这并没有发生。我得到以下输出:

输出:

url string: https://stackoverflow.com/users/signup?ssrc=head&returnurl=%2fusers%2fstory%2fcurrent
matched string: <re.Match object; span=(0, 85), match='https://stackoverflow.com/users/signup?ssrc=head&>

显然,匹配到最后会留下一大块 url 字符串。returnurl=%2fusers%2fstory%2fcurrent我的模式与 url 字符串的部分不匹配。为什么会这样?我应该使用其他东西而不是r'.+'我的模式吗?

代码:

def getQueryParameters(url):
    print(f"url string: {url}")
    pattern = re.compile(r'.+')
    match = pattern.search(url)
    print(f'matched string: {match}')

if __name__ == '__main__':
    url = "https://stackoverflow.com/users/signup?ssrc=head&returnurl=%2fusers%2fstory%2fcurrent"
    getQueryParameters(url)

标签: pythonregex

解决方案


打印匹配对象本身不会显示整个匹配。如果您打印match.group(0)而不是match,您将看到您的正则表达式与整个字符串匹配。


推荐阅读