MIT OCW のアルゴリズム コースを受講しています。re.findall は一般に指数関数的な複雑さのアルゴリズムである可能性があるため、 re.findall の使用には注意が必要であることが講義で言及されています。これは、大きなファイルやデータセットを解析する際の懸念事項ですか?また、データからパターンを効率的に抽出するための正規表現の代替手段はありますか?
質問する
152 次
1 に答える
1
それはあなたが何をしたいかによって異なります。
一般に、タスクを実行するために必要な最も単純なツールを使用してください。
in
正規表現よりはるかに効率的だと思いますが、ワイルドカードや繰り返しなどは許可されていません。探しているパターンがすべて1行にある場合は、一度に1行ずつ検索して、それぞれを処理できます(次の行の前にメモリから取り出します)。文字列の開始または終了を探している場合は、or を使用しmystring.startswith()
ますmystring.endswith()
。これらの方が効率的です。
データをより管理しやすいチャンクに分割できる場合があります。
複数行の検索が必要で、先頭または末尾になく、ワイルドカードまたは繰り返しが含まれている場合...正規表現で立ち往生している可能性があります。
于 2013-07-03T22:00:32.673 に答える