From: Akihito Tsukamoto Date: 2005-12-07T11:59:33+09:00 Subject: [ruby-list:41679] Re: 正規表現について 塚本です。 keiichi matsunagaさんの<439649a0.4529%ma2@lifemedia.co.jp>から >|str.gsub(/[%$_^]/,"\\#{$1}") といった感じにやって > > マニュアルよると,置換文字列には「$数字」は使えないけど「\数字」は使 >えるみたいですね。 > >irb(main):027:0> str.gsub(/[%$_^]/,'\\ \\1') >=> "abc\\ %def\\ $ghi\\ _jkl\\ ^mno" > >irb(main):028:0> str.gsub(/([%$_^])/,'\\\\1') >=> "abc\\1def\\1ghi\\1jkl\\1mno" > > あれ'\\\\1'にするとうまくいかないのはなぜだろう。「\\\\」→「\\」の >エスケープが優先されちゃうから? str.gsub(/([%$_^])/,'\\\\\\1') とすれば、いけますね。 str.gsub(/([%$_^])/){"\\#$1"} の方が見やすいかも。 http://www.ruby-lang.org/ja/man/?cmd=view;name=trap%3A%3A%5C%A4%CE%B1%C6%B6%C1 を参考にしました。 -- Akihito Tsukamoto mailto:tsukamoto@netage.co.jp