文字列のリストのいずれかと一致する必要があります。文字列ごと"item1|item2|item3|..."
に個別に行うのではなく、正規表現を使用できるかどうか疑問に思っています。strstr()
ただし、リストはかなり大きくなる可能性があります (最大 10000 項目) 。正規表現はそれでうまく機能しますか?各文字列を個別に検索するよりも高速でしょうか?
1 に答える
1
正規表現は機能し、各文字列を検索するよりも確実に高速になります。10000 の入力パターンを考えると、初期セットアップにどれくらいのメモリ フットプリントまたは時間がかかるかはわかりませんが。
ただし、これはよく知られた問題であり、多くの特定のアルゴリズムがあります。たとえば、次のとおりです。
および他のいくつか。それらはすべて異なるトレードオフを持っているので、あなたの毒を選んでください.
私たちのプロジェクトでは、複数置換ソリューションが必要だったので、Aho-Corasick アルゴリズムを選択し、その上に置換関数を構築しました。
于 2013-03-19T15:31:09.290 に答える