質問: re.compile('hello') h.match('hello world') vsre.match('hello', 'hello world')
回答: 私はコンパイル済みの正規表現を何千回も実行するのに対してオンザフライでコンパイルすることに多くの経験を積んできましたが、それほど大きな違いは気づいていません。 受け入れられた答えに対する投票は、@ triptyが言うことがすべての場合に当てはまるという仮定につながります。これは必ずしも真実ではありません。大きな違いの1つは、関数へのパラメータとして正規表現文字列とコンパイル済み正規表現オブジェクトのどちらを使用するかを決定する必要がある場合です。>>> timeit.timeit(setup=""" ... import re ... f=lambda x, y: x.match(y) # accepts compiled regex as parameter ... h=re.compile('hello') ... """, stmt="f(h, 'hello world')") 0.32881879806518555 >>> timeit.timeit(setup=""" ... import re ... f=lambda x, y: re.compile(x).match(y) # compiles when called ... """, stmt="f('hello', 'hello world')") 0.809190034866333 再利用する必要がある場合に備えて、正規表現をコンパイルすることをお勧めします。上記のtimeitの例は、インポート時に1回コンパイルされた正規表現オブジェクトの作成と、一致に必要な場合の "on-the-fly"の作成をシミュレートしていることに注意してください。