python - поиск и поиск по регулярным выражениям

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

  • Почему поведение отличается?

  • Как я могу достичь результата search () с помощью findall () (или чего-то еще)?

15
задан armandino 13 November 2011 в 06:33
поделиться