Это жадный. Прекращает сопоставление, когда попадает в пробел, потому что [\w./:]
не соответствует пробелу. Пробел не является символом слова (alphanumeri c или подчеркивание), точкой, sla sh или двоеточием.
Измените +
на +?
, и вы можете посмотрим, что происходит, когда он не жадный.
жадный
>>> 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:'>
It соответствует одному символу :
!