web-dev-qa-db-ja.com

効率的な複数の部分文字列検索

約40〜50語の長さのテキストで検索したい多くの部分文字列(それぞれ2〜5語)があります。一致する部分文字列にフラグを立てる最も効率的な方法は何ですか。

現在私は単に使用しています:

for substring in substrings:
   if substring in fullText:
      return True

substrings-検索する文字列のリスト

fullText-検索するテキスト。

このソリューションの最悪のケースは、すべての部分文字列がfullTextで繰り返し検索されることです。

2
skadoosh

リストから正規表現(「Word1 | Word2 | Word3」のようなもの)を作成し、ご使用の言語で使用可能な正規表現関数を使用します。それはうまくいけば、マッチングのために最適化されたデータ構造、おそらく有限状態マシンまたは同等のものを作成します。

5