0

文字列のリストのいずれかと一致する必要があります。文字列ごと"item1|item2|item3|..."に個別に行うのではなく、正規表現を使用できるかどうか疑問に思っています。strstr()ただし、リストはかなり大きくなる可能性があります (最大 10000 項目) 。正規表現はそれでうまく機能しますか?各文字列を個別に検索するよりも高速でしょうか?

4

1 に答える 1

1

正規表現は機能し、各文字列を検索するよりも確実に高速になります。10000 の入力パターンを考えると、初期セットアップにどれくらいのメモリ フットプリントまたは時間がかかるかはわかりませんが。

ただし、これはよく知られた問題であり、多くの特定のアルゴリズムがあります。たとえば、次のとおりです。

および他のいくつか。それらはすべて異なるトレードオフを持っているので、あなたの毒を選んでください.

私たちのプロジェクトでは、複数置換ソリューションが必要だったので、Aho-Corasick アルゴリズムを選択し、その上に置換関数を構築しました。

于 2013-03-19T15:31:09.290 に答える