Мне нужно найти все совпадения в строке для данного регулярного выражения. Я использовал 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()(или что-то еще)?