[ruby-list:41679] Re: 正規表現について

From: Akihito Tsukamoto <tsukamoto@...>
Date: 2005-12-07 02:59:33 UTC
List: ruby-list #41679
塚本です。

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

In This Thread