From: TAKAHASHI Masayoshi Date: 2001-12-05T19:59:09+09:00 Subject: [ruby-dev:15365] Re: Regexp in UTF-8 (Re: Regexp literal and Regexp.new()) 高橋征義です。 nobu.nakada@nifty.ne.jpさん: > At Wed, 5 Dec 2001 15:52:55 +0900, > matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > > |UTF-8の正規表現で、[]がうまく動かないようです。 > > > > つーか指定が間違ってると思います。 > > > > |reg = Regexp.new("[\303\251-\303\254]", nil, "u") > > > > の[\303\251-\303\254]は「\303と\251から\303と\254」と解釈し > > てるんではないかと。ここは直接UTF-8を(octal表現でなく)記述す > > るか、ocatl表現文字列からRegexp.compileを使うかのいずれかが > > 正しいのではないかと思います。 > > いや、""の中にあるんで、すでにUTF-8が直接埋め込まれた形になって > るはずです。 [ruby-talk:27499] の Martin v. Loewis さんのメールでは リテラルを使っていたものを、上の例では文字列から生成する ように変えてしまったので混乱させてしまったかも。だとしたら すみません(_o_) なお、ちゃんと(?)シングルバイト扱いされているなら、[\251-\303]に あたる全ての文字が置換されるはずなので、 str = "soci\303\251t\303\251" reg = Regexp.new("[\303\251-\303\254]", nil, "u") p str.gsub(reg, "?") が、 "soci??t??" みたいになりそうな気がします(まさに[ruby-talk:27499]のように)。 高橋征義 (TAKAHASHI Masayoshi) Email:maki@inac.co.jp