特定の正規表現の文字列ですべての一致を見つける必要があります。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()
withfindall()
(または他の何か)の結果を得るにはどうすればよいですか?