From: "民斗" Date: 1998-11-23T05:21:43+09:00 Subject: [ruby-list:11017] Re: バックスラッシュのエスケープ [Subject: [ruby-list:11015] バックスラッシュのエスケープ] [Date: Mon, 23 Nov 1998 02:29:58 +0900 From:Yoshiki WADA] > バックスラッシュをエスケープさせたいと思い、次のようなコードを書きました。 > > a = '\\' > a.gsub!(/\\/, '\\\\') > print a, "\n" > > バックスラッシュが2つ表示されることを期待しているのですが、 > 表示されるのはバックスラッシュ1つだけです。 私も同じところではまってかなり悩みました。メーリングリストに投稿 する直前で(まさに送信ボタンを押そうとしたところで)気づきました。 '\\\\' は構文解析時に '\\' に置き換わりますが、gsub() の第2引数は さらに、実行時に '\\' → '\' と変換されるのだと思います。 これは、おそらく '\1' 等を処理するためだと思います。 > 期待通りに動作させるにはどうすれば良いのでしょうか。 ということで、'\\\\\\\\' ('\' が8個)と書きましょう (^^; # 6個でもいいみたい。 -- 民斗