From: sheepman Date: 2008-01-23T00:02:53+09:00 Subject: [ruby-dev:33279] ASCII-8BIT regexp こんばんは sheepman です。 エンコーディングが ASCII-8BIT である正規表現オブジェクトに 関して質問です。聞きたいのは「正規表現のエンコーディングが ASCII-8BITであるというのはどういうことなの?」ということです。 具体的には2つあります。 ひとつめ。fixed encoding じゃない正規表現のエンコーディングは ASCII-8BIT です。これはこういうものでしょうか。任意のエンコー ディングの文字列にちゃんとマッチする正規表現が ASCII-8BIT という のは変な気がします。nil を返した方が良いのではと思います。 あんまり強い意見を持っているわけではないですが。 ふたつめ。こっちはわりと重要だと思います。n オプション付きの正規表現が マルチバイトの文字列にマッチした時 警告が出ます。これはどういう意図なんで しょうか。 $ ruby-1.9 -v -e '/./n =~ "いろは"' ruby 1.9.0 (2008-01-22 revision 0) [i686-linux] -e:1: warning: regexp match /.../n against to EUC-JP string (1) 本来は例外を投げたいけど1.8との互換性のために警告にとどめている。 (2) 今の動作が仕様なんだけど、1.8との互換性が無いから警告を出している。 (1)か(2)かでマニュアルの記述が変わると思います。よろしくお願いします。 -- sheepman / TAMURA Takashi sheepman@sheepman.sakura.ne.jp