SkRegExp version 1.0.18を公開しました。
今回のバージョンの狙いは最適化の更なる追求です。
今注力している最適化は、正規表現の先頭がリテラルで始まるとき、そして、正規表現全体がリテラルのときです。
以前ボツにした QuickSeach をブラッシュアップしてこれらの処理に使うようにしました。
「正規表現の先頭がリテラルで始まる」というのは。たとえば次のような正規表現です。
th(is|at|e|ese)
この正規表現がマッチするには、「th」で始まる箇所でないと決してマッチしません。
したがって、正規表現エンジンを起動する前に、まず「th」で始まる箇所を QuickSeach で検索して、その箇所でのみ正規表現エンジンを起動するようにしています。
また、「正規表現全体がリテラル」と言うのは、次のような正規表現です。
that
このようなメタ文字を含まない正規表現の場合、エンジンを起動するのはムダです。したがって、QuickSeach のみでマッチ位置を探します。
ちなみに、QuickSeach を実現しているのは、TREQuickSeach と言うクラスですが、以前の QuickSeach 関数と異なり、TSkRegExp ありきの実装になっていますので汎用性はありません。