私はJavascriptで作業していますが、これは一般的な正規表現の質問だと思います。等距離文字の特定の正規表現検索の最適化
長い文字列の部分文字列を等間隔で検索するスクリプトを作成しています。たとえば、テキストa11b22c33d44
では、2つの連続する文字の間に2の距離を持つ文字列abcd
があります。
regexp検索を使用してこのような文字列を見つけるのは簡単です。上記の例では、正規表現/a.{2}b.{2}c.{2}d/
を検索するだけです。私が今やっていることは、検索する単語と連続した文字の間の距離を指定すると、その間に.{n}
(nは距離)を置くだけで、これを正規表現としてコンパイルし、残りの作業をさせます。
これは、文字間の距離が小さい、たとえば約1000である限り、実際には非常にうまく機能します。その後は遅くなります。それでも動作しますが、同じ検索をより効率的に実行する別の方法があることを願っています。なぜなら、より大きなギャップのためにはかなり遅くなければならないという明白な理由は見当たりません。(まだテキスト全体を一度だけ読み直す必要があります)
あなたはregexp 'a。{2} b。{2} c。{2} d'も' aaabbbcccd'にマッチします - これは意図的なのでしょうか? – hochl
はい、aaabbbcccdには文字間に距離2の部分文字列として "abcd"が含まれています。 –