SkRegExp version 1.1.8 公開

SkRegExp version 1.1.8 を公開しました。

2つのバグを修正しました。

一つは、^d のような行頭一致の正規表現を繰り返し適用したとき、先頭位置を正しく認識しないバグを修正しました。

これは TSkRegExp.MatchCore の最初で、文字列のポインタの現在位置を FMatchTopP に代入していたのが原因でした。

FMatchTopP は 対象文字列のマッチの先頭位置です。ExecPos で範囲指定しない限り FTextTopP と同じでなければならないんですが、チェック用に入れたコードがずっと残ったままだったようです。

このパターンのテストを書いていなかったため気づきませんでした。

もう一つのバグは、一つ目のバグを探っている最中に見つけました。

一つ目のバグの原因を最適化にあるとにらんでチェックしていたら、行頭一致の最適化が死んでいるのを見つけました。

せっかく行頭一致があると検出したのに無視してしまっていたのです。

ついでにこちらも修正しました。

それと、TSkRegExp に Replace と Split が復活しています。

テストは通っているのですが、ヘルプを書くのが面倒だったためドキュメントには載せていません。

元に戻した理由は、SkRegExp で持っていたほうがテストが楽だと気づいたからです。

近いうちに、version 1.0 系にも復活させて SkRegularExpressions.pas を軽くします。

SkRegularExpressions.pas は ANSI Delphi で問題があるようなのでこっちも直さないと。

コメントを残す

メールアドレスが公開されることはありません。