[#46093] 質問:mingw環境でのtcltklib.soのコンパイル — Dice <rubyist@...>

Diceです。

12 messages 2009/06/16

[ruby-list:46100] Re: gsub における '&' の挙動

From: Takao Kouji <kouji@...7.net>
Date: 2009-06-17 23:39:34 UTC
List: ruby-list #46100
高尾宏治です。

On 2009/06/18, at 8:01, Hideo Konami wrote:
> テキスト中の記号を置換しようとしていて,'&'の振る舞いが他の
> 記号と異なることに気がつきました。困るのはもちろんですが,訳
> が分からないのはもっと気持ちが悪いです。どなたか解決策と
> 理由を教えていただけないでしょうか。

以下のURLから参照できるように、gsubの置換文字列(第2引数)における\&には特別な意味があります。
http://www.ruby-lang.org/ja/man/html/String.html#gsub

\&は、マッチした部分文字列になります。
つまり、s.gsub('&','\&')では、マッチした部分文字列が&そのものですので、
sに変化がないように見えるのですね。

それで、今回の例では、\\\\&を指定すれば期待通りに動作すると思います。

  s = s.gsub('&','\\\\&')
  -> "abc\\_def  \\&ghi 125\\$"

いかがでしょうか。

---
TAKAO Kouji <kouji@takao7.net>
blog: http://d.hatena.ne.jp/kouji0625/
twitter: takaokouji / projects: ruby, s7-seven


In This Thread