SkRegExp version 2.6.0 公開

SkRegExp version 2.6.0 を公開しました。

変更点は次の2つです。

  • 修正)同名グループが仕様通りの挙動をしないバグを修正。
    最左採用するはずが最右を採用していた。
  • 変更)マッチしていないグループを参照しても例外を投げないように変更。
    該当するグループ名の TGroup インスタンスを返すようにした。[詳細…]

version 3.0 のデバッグ中に発見したバグを修正したモノを反映しました。

最初のバグの原因はSubVersion のマージを失敗したためです。

なんと 2.0 で変更したテストプログラムが 1.x のものに戻っていました。

仕様通りに動かないのは当然というわけです。

2番目の変更はこの方が使いやすいと指摘を受け、私ももっともだと思ったからです。

var
  r: TSkRegExp;
  S: REString;
begin
  r := TSkRegExp.Create;
  r.Expression := '(?<n>a)?b';
  if r.Exec('b') then
  begin
    // version 2.5 以前では以下で例外が発生する。
    // グループ名 <n> はマッチしていないため。
    // version 2.6 以降は 該当するグループ名の TGroup インスタンスが返る。
    // この例では空文字が返る。
    S := r.Groups.Names['n'].Strings;
  end;
end;

例外を発生させないために IndexOfMatchedName と言うメソッドを作りました。

でも、例外を投げない方がはるかにカンタンだったんですねえ。

というわけで。

SkRegExp version 2.6.0 はこちらからダウロードできます。

コメントを残す

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