2011-01-15 10 views
186

私が書いているプログラムでは、Pythonはre.search()関数を使用して、テキストのブロック内の一致を見つけて結果を表示します。ただし、テキストブロック内の最初の一致が見つかると、プログラムは終了します。Pythonで正規表現にマッチするものをすべて見つける方法はありますか?

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

+0

[再帰的なREs](http://web.archive.org/web/20030206032122/http://www.puffinry.freeserve.co.uk/regex-extension.html)は別の獣です。あなたは検索を繰り返す。 – outis

答えて

332

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

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

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

+2

'finditer'は私が探していたものでした。私は、Matchオブジェクトと他の文字列を返すのに驚いています。私は 'match_all'または' match_iter'関数を使うことを期待していました。 – dsclose

+7

免責事項:**重複していない**の一致は、 –

+0

@AntoineLizéeと一致します。重複を伴う反復をどのように見つけるか? – Raksha