SkRegExp ver.2.5 以前の名前付きグループのバグとは?

SkRegExp の version 2.5 以前の名前付きグループにはバグがあります。

ところがどんなバグかについては説明していませんでした。

SkRegExp version 2.5 以前の名前付きグループのバグとは?

同じ名前のグループが複数あるときの挙動が仕様とは異なります。

仕様では「同じ名前のグループが複数ある場合は、一番左で定義されたグループを参照します」としています。

実は、後方参照は仕様通りに動きます。

正規表現パターン (?<n>a)(?<n>b)(?<n>c)k<n> を abca にマッチさせます。

このマッチ自体は成功します。

「同じ名前のグループが複数ある場合は、一番左で定義されたグループを参照します」と言う仕様通りです。

仕様通りでないのはグループ名 n をプロパティを使って読み出すときです。

TSkRegExp クラスの Groups.Names[‘n’].Strings を参照すると c が返ってきます。

なお、同じ名前のグループ名を使わなければこのような問題は発生しません。

実際、同じ名前のグループ名を使うメリットもわかりませんし。

そのためバグ報告もなかったのでしょう。

version 2.5 以前で同じ名前のグループ名を使うときは注意してください。

まあ、余計な心配をしたくないなら SkRegExp version 2.6.2 をお勧めします。

コメントを残す

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