From: Koji Arai Date: 2003-05-09T00:14:25+09:00 Subject: [ruby-list:37664] Re: マッチした部分を配列にしまう方法 新井です。 In message "[ruby-list:37662] Re: マッチした部分を配列にしまう方法" on 08 May 2003 23:37:52 +0900, Koji Arai wrote: > 新井です。 > > In message "[ruby-list:37658] Re: マッチした部分を配列にしまう方法" > on 08 May 2003 12:10:01 +0900, > tsuji.td@ncos.nec.co.jp wrote: > > 辻(忠)です。 > > > ちなみに上記の自動変換は1.8では非サポートです。 > > #1.8では警告が出た覚えがあるんですがいま試してみたら出ませんでした。 > > #何か規則があるんだろうか・・・? > > > > 1.6系(1.6.8) > > p ('1234' =~ '\d+') => 0 > > 1.7 あたりから String#=~ は、変更されていて > > 'str' =~ 'pattern' > > が、 右辺が文字列の場合に > 'str'.index('pattern') > > みたいになってますね。この非互換はあまりよろしくないと思われ。 > 非互換にするならむしろ String#=~ をなくしてしまった方がまだ > マシな気がします。 右辺が文字列の場合の挙動をなくしてしまった方が 1.7 以降、文字列を正規表現に解釈してた部分 ('str'.scan('pattern')の引数など)は Regexp.compile('pattern') としてたところを Regexp.compile(Regexp.quote('pattern')) となるような変更がありました。'str' =~ 'pattern' の変更もこ の延長で、'str' =~ Regexp.compile(Regexp.quote('pattern')) と等価だと言うことなんでしょうね。$~ 設定されないけど。 1.7 の変更は、scan や gsub などにはとても便利なのですが String#=~ にも適用したのはやりすぎではないかと言いたいのでしょ うね私は(^^; -- 新井康司 (Koji Arai)