2011-06-29 6 views
3

「これは私の{foo}文字列です」という文字列があります。Rubyとgsubを使用して中括弧(角かっこを含む)内の文字を文字列に置き換えます。

私はいくつかの操作量と中括弧などの内容を置換する:

「これは私のFOOの文字列である」

私がここまで持っている:

result = mystring.gsub(/\{(.*?)\}/){|m| m.upcase} 

しかし、これを「これは私の{FOO}文字列です」を返します。つまり、中括弧はまだそこにあります。

中括弧も置き換えられるように、正規表現のフレーズはどのようにしますか?

答えて

4

生成される文字列は完全一致であるため、中括弧が含まれています。最初のキャプチャグループのパーツだけを使用したいので、ブロック内でmの代わりに$1を使用できます。

+0

ありがとう - ありがとう –

+0

Seppが言っていることを最も遠くに受けていますか? gsubは各キャプチャグループを歩きながら$ 1、$ 2、$ 3にダンプします。 Rubyが正規表現を解析するとき、特殊変数として$ numbを使用します。 – Braden

+0

ええ、ありがとう - できます result = mystring.gsub(/ \ {(。*?)\} /){| m | m = $ 1.upcase} または単に 結果= mystring.gsub(/\{(.*?)\ }/){$ 1.upcase} –

関連する問題