partial matching (2)

最初は、マッチング処理の途中で文字列が終端に達した場合をチェックする方法を考えていたが、正規表現パターンを書き換える方法も検討してみた。後者のほうが、partial matchingでない場合の速度に影響を与えないので良いと思う。

/ab/ ==> /a(?:b|\z)|\z/

パターンの書き換えで大体はうまくいく気がするが、後方参照は予め書き換えることができない。それと、最低回数が指定された繰り返しも簡単ではない。