2016年8月19日 5:57 pm #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」にマッチするんですね。