前回紹介ページを改良しました。
Regex規定のコードポイント範囲、名前付きブロック、文字クラスの各要素の一覧を表示するようにしました。
http://www.ognogn.com/Regex/Regex_char_NameBlock.aspx
実行してみて、感じたのですが、既定の定義の範囲と、期待した範囲が不一致な部分が多いです。
一例では、 文字クラス \d は10進数字文字ですが、regexが該当と判定する文字は
0123456789<いろいろ文字あり>?0123456789
これらが該当します。うーん、規格とすれば、そうなるのでしょうが、洋数字だけに反応して欲しいです。
同様に、\s はwhite Space文字を意味するのですが、
? ?????????????????
が該当します。雄雌マークになります。(表示できてないかもしれません)
このように、Regex.で規定されているブラケット文字は通念上期待している範囲を超えた文字を含むので、ブラケットを使うのでなく、明示的に範囲指定するのが賢明のようです。
直接指定で範囲確認できるようにしました。
[1-9]や[一-九]の確認もできます。[1-9]はコードが順次していなので、期待通りです。
[一-九]は軽く期待すれば期待はずれになります。漢数字は順次に規定はされてません。
[一-九]の間は、
一丁?七???万丈三上下?不与?丐丑??且丕世丗丘丙????丞??両????並?丨?个??中???丱串???丶?丸丹?主丼??丿??乂乃?久?????之?乍乎乏?????乕乖乗乘乙???九
となっています。
S-JISとUNICODEの違いもあり、コード体系を理解する必要があるので、注意してつかいませう。