web-dev-qa-db-ja.com

Pythonで正規表現に一致するものをすべて見つけるにはどうすればよいですか?

私が書いているプログラムでは、私はPythonがre.search()関数を使ってテキストブロック内の一致を見つけ、その結果を表示するようにしています。ただし、テキストブロック内で最初の一致が見つかるとプログラムは終了します。

すべての一致が見つかるまでプログラムが停止しないようにするにはどうすればよいでしょうか。これを行うための別の機能はありますか?

250
kjakeb

代わりにre.findallまたはre.finditerを使用してください。

re.findall(pattern, string) は一致する文字列のリストを返します。

re.finditer(pattern, string)MatchObject オブジェクトに対してイテレータを返します。

例:

re.findall( r'all (.*?) are', 'all cats are smarter than dogs, all dogs are dumber than cats')
# Output: ['cats', 'dogs']
454
Amber