金子です。

In message "[ruby-list:7404] Re: string replace"
    on Thu, 9 Apr 1998 19:09:46 +0900, matz / netlab.co.jp (Yukihiro Matsumoto) writes:

matz> まつもと ゆきひろです
matz> 
matz> |再び、文字列置換の話です。
matz> |
matz> |2)の修正を入れてしまうと、1バイトの '\' を正しく表現する方法がな
matz> |いような気がするのです。
matz> 
matz> その通りですね.また,sub/gsubの2番目の引数は '' を指定する
matz> ことをお勧めしてます.これなら \\ と \' 以外は \ をそのまま
matz> 通すので,問題が減ります.

お勧めがあるのですか。
さすがに問題は把握されているのですね。

matz> |perl と違うし、直感的でもないのですが、現在の仕様は正解なので
matz> |しょうか?
matz> 
matz> ではないかと思います.emacsの正規表現とかだと \ のエスケープ
matz> が重なってなかなか楽しいことになります.

ちょっと残念ですが、仕様が明確ならやりようはありますね。

でも、\ 1バイトを確実に変換するためには \\\\ と4つ重ねなければ
いけなというのはさすがにわかりにくいと思います。
あと、'\\' は \ に対するエスケープですが、'\a' は a に対するエスケープ
でなく、\a そのものをさすというのも曖昧ですよね。

このへん、マニュアルのどこかにきちんと説明が欲しいと思います。

# ruby本のコラムとかならベストなんですけど ...


-- 
金子 尚史 (KANEKO Naoshi)   wbs01621 / mail.wbs.or.jp