#22968
redakt55
参加者

理由が分かりました。

結論から言えば,case insensitive(大文字・小文字を区別しない)における Onigmo の動作の仕様といっていいと思います。

Ruby などで実験しても同じです。

case insensitive のとき,U+017F LATIN SMALL LETTER LONG S という文字が「s」や「S」にマッチします。
この文字はラテン文字の小文字の普通のエス「s」のいわば異体字で,日本語でも「ロングエス」と言います。音価なども同じ。対応する大文字は普通の「S」です。
写本や初期の活版印刷で使われていました。

試しに検索ダイアログに \x{014F} を入れて,大文字・小文字を区別しない,で検索してみてください。「s」や「S」にマッチしますね。

[\x{0080}-\x{FFFF}] の範囲にこのロングエスが含まれているために,「s」「S」にマッチしたんですね。

一方,U+212A KELVIN SIGN という記号があります。これは温度のケルビン記号なのですが,既存コードとの互換性のために用意された文字であり,ふつうはケルビンの記号にはこれでなく普通のラテン文字の「K」を使うことが推奨されています。

これも,case insensitive の場合はふつうの「k」「K」にマッチするんですね。