From: keisuke fukuda Date: 2008-05-16T20:38:44+09:00 Subject: [ruby-dev:34727] バックスラッシュを含むsub/gsubの挙動 はじめまして。福田と申します。 sub/gsubの挙動で、 ' → \\' という置換をしようとした場合の挙動についてです。下記の動作は意図的なものでしょうか? ' (シングルクォート)以外も、起こる文字と起こらない文字があるようです。 網羅的に試したわけではないですが、'& などでは起こり、$#などでは起こりません。 sub/gsub, 1.8/1.9、の全てで共通のようです。 $ ./ruby -v ruby 1.9.0 (2008-05-16 revision 0) [i686-linux] $ ./ruby p "a".sub(/a/, "\\a") p "'".sub(/'/, "\\'") # <--? p "'foo'".sub(/'/, "\\'") # <-- ? p "'foo'".sub(/'/, "\\'") # <-- ? p "a".sub(/a/) { |m| "\\a" } p "'".sub(/'/) { |m| "\\'" } # ブロックの場合は違う挙動(こちらが本来・・・??) p "'foo'".sub(/'/) { |m| "\\'" } p "'foo'".sub(/'/) { |m| "\\'" } ==> "\\a" "" "foo'foo'" "foo'foo'" "\\a" "\\'" "\\'foo'" "\\'foo'" $ ./ruby -v ruby 1.8.7 (2008-05-16 patchlevel 5000) [i686-linux] p "a".sub(/a/, "\\a") p "'".sub(/'/, "\\'") p "'foo'".sub(/'/, "\\'") p "'foo'".sub(/'/, "\\'") p "a".sub(/a/) { |m| "\\a" } p "'".sub(/'/) { |m| "\\'" } p "'foo'".sub(/'/) { |m| "\\'" } p "'foo'".sub(/'/) { |m| "\\'" } ==> "\\a" "" "foo'foo'" "foo'foo'" "\\a" "\\'" "\\'foo'" "\\'foo'" -- FUKUDA, Keisuke <福田圭祐> Tokyo, Japan Email: keisukefukuda@gmail.com