Мне нужно найти все совпадения в строке для данного регулярного выражения. Я использовал findall()
для этого, пока не наткнулся на случай, когда он не делал то, что я ожидал. Например:
regex = re.compile('(\d+,?)+')
s = 'There are 9,000,000 bicycles in Beijing.'
print re.search(regex, s).group(0)
> 9,000,000
print re.findall(regex, s)
> ['000']
В этом случае search()
возвращает то, что мне нужно (самое длинное совпадение), но findall()
ведет себя по-другому, хотя документы подразумевают, что они должны быть одинаковыми:
findall()
соответствует всем вхождениям шаблона, а не только первому какsearch()
.
-
Почему поведение отличается?
-
Как я могу достичь результата
search()
с помощьюfindall()
(или что-то еще)?