[ruby-list:38396] Re: 文字クラスと//i

From: TAKAISHI Hayato <rio-t@...>
Date: 2003-09-16 09:25:08 UTC
List: ruby-list #38396
高石です。

From: kkosako@softbank.co.jp
Subject: [ruby-list:38395] Re: 文字クラスと//i
> > /[A-_]/i
> > 
> > が、invalid regular expression になります。
> 
> これは何にマッチするべきなのでしょうか?
> A-Z, a-z, 0x5b-0x5fかな?

私の感覚ではそうなることを期待していました。
というのは、まず /[A-_]/ という正規表現があって、そこに i を
追加するという感覚だったので、

"A" =~ /#{hoge}/

がマッチする場合、hogeの中身に関わらず、

"a" =~ /#{hoge}/i

もマッチするものだという認識でいました。

といっても、これがエラーになるのは仕様であるといわれれば、そ
れはそれで納得できます。そういうものだと知っていれば、エラー
にならないよう分割して書くだけのことなので。
ただ、その場合は、/[!-_]/i に対してもエラーなり警告なり出し
て欲しいとは思います。

> /[a-_]/iの場合はどうでしょうか?

この場合は、a-_ が ASCIIコード順で逆順になるので、その時点で
エラーになるという動作でいいと思います。
もしくは、親切に [_-a] と順序を替えて解釈し、[_`aA] にマッチ
しても悪くないとは思います。

いずれにしても、私の感覚では //i は、まず // の中身を解釈し
てから i だと思っていたのですが、どうやら現実はそうではない
ようですね。
/--------------------------------------------------------/
  高石 勇人 < rio-t@presen.to >
  PGP Key(RSA): http://rio-t.presen.to/pgp/mykey.asc
         (DSS): http://rio-t.presen.to/pgp/mykey-dss.asc
/--------------------------------------------------------/

In This Thread