From: matz@... (Yukihiro Matsumoto) Date: 1998-12-16T10:43:23+09:00 Subject: [ruby-list:11367] Re: sub or gsub の第2引数について まつもと ゆきひろです In message "[ruby-list:11364] Re: sub or gsub の第2引数について" on 98/12/15, YANAGAWA Kazuhisa writes: |In message <199812150559.OAA32348@picachu.netlab.co.jp> |matz@netlab.co.jp (Yukihiro Matsumoto) writes: | |> そーなんですよ.重要なTIPSのひとつですね. |> 別の手としては |> |> "abcabc".gsub(/(b)(c)/){"#{$2}*#{$1}"} | | "foo".sub /f/, "s\\1" | |とかでも問題無いですね. そーですね.バックスラッシュをいくつ置けば良いのか段々分から なくなること以外は問題なしですね. |ところで, | | >ruby -e 'puts /[\000-\177]/ =~ "\244"' | 2 | |これ,なんでしょう? in ruby 1.1c9(98/11/26) [i386-freebsd3.0].何か考 |え違いしています? わたし. いいえ,バグです.\244を「あ」の前半だとみなしてるんですね. で,勘違いが起きていると.たとえば >ruby -e 'puts /[\000-\177]/n =~ "\244"' とかだとOKです.このバグはかけこみで1.1d0に取り込まれます. | >ruby | for i in 0200..0400 | eval(sprintf("puts \"\\%o\" =~ /[\\000-\\177]/", i)) | end | |とか | | >ruby -e 'puts "\444"' | |とかすると,非常に直観に反した結果が得られるのですが. ruby -e 'puts "\444"' が 044 だったりすることですか? これは仕様です.文字列中の8 進表現は3桁までに制限されているだけでなく,0377以下という制 限もあります.で,0377を越えた場合はその剰余がとられます.で すから,\444は\044と同じです. まつもと ゆきひろ /:|)