猿问

蟒蛇正则表达式为什么量词(+)不贪婪

输入:asjkd http://www.as.com/as/g/ff askl

预期输出:http://www.as.com/as/g/ff

当我在下面尝试时,我得到了预期的输出

pattern=re.compile(r'http[\w./:]+')
print(pattern.search("asjkd http://www.as.com/as/g/ff askl"))

为什么这里的量词不贪婪?我以为它会很贪婪。在这里,实际上不贪婪有助于找到正确的答案。+


慕后森
浏览 64回答 1
1回答

繁花不似锦

这是贪婪的。当它到达空间时,它会停止匹配,因为与空间不匹配。空格不是单词字符(字母数字或下划线)、点、斜杠或冒号。[\w./:]改变到,你可以看到当它不贪婪时会发生什么。++?贪婪>>> pattern=re.compile(r'http[\w./:]+')>>> print(pattern.search("asjkd http://www.as.com/as/g/ff askl"))<re.Match object; span=(6, 31), match='http://www.as.com/as/g/ff'>不贪婪>>> pattern=re.compile(r'http[\w./:]+?')>>> print(pattern.search("asjkd http://www.as.com/as/g/ff askl"))<re.Match object; span=(6, 11), match='http:'>它匹配一个字符!:
随时随地看视频慕课网APP

相关分类

Python
我要回答