Мне нужно найти все совпадения в строке для данного регулярного выражения. Я использовал 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 ()
соответствует всем вхождениям шаблона, а не только первому assearch ( )
делает.
Почему поведение отличается?
Как я могу достичь результата search ()
с помощью findall ()
(или чего-то еще)?