[#44237] Float を利用するRubyプログラム — SASADA Koichi <ko1@...>

 ささだです.

16 messages 2007/11/17
[#44241] Re: Float を利用するRubyプログラム — SASADA Koichi <ko1@...> 2007/11/19

 ささだです.

[ruby-list:44196] Re: 式展開で正規表現を使う場合、うまく展開されない

From: ANAKI Kyosuke <anaki@...>
Date: 2007-11-08 22:05:08 UTC
List: ruby-list #44196
 なるほど、非常によくわかりました。ありがとうございます。

On 2007/11/09, at 1:55, eklerni@for.mail-box.ne.jp wrote:

> eklerniです。
>
> 07/11/09 に ANAKI Kyosuke<anaki@pobox.com> さんは書き 
> ました:
>>  式展開で正規表現を使う場合、どうもうまく展開ができません。
>> 例えば、以下のような文字列testにリンクを貼る場合、
>> ()でくくった部分に対して何らかの処理を行うとします。
>>
>> $KCODE = "UTF-8"
>> test ="→abc←"
>> print test.gsub(/→(.+?)←/ , '<a href="' +  
>> "#{$1.upcase}"
>> + '">\1</a>')
>>
>> この場合、
>> <a href="ABC">abc</a>
>> という結果を期待しているのですが、$1はなぜかnilに
>> なってしまいます(で、エラーになる)。
>> この場合、$1と\1は両方とも「abc」になると
>> 思うのですが……。
>>
>> どなたかアドバイスをいただけると助かります。
>
> 第二引数の内部で $<数字> を使うことはできませ 
> ん。この文字列が評価される時点ではまだマッチは行われていな 
> いからです。詳しくはマニュアルのString#gsubの項を参照 
> してください(今は繋がらなくなっていますが)。
>
> 回避策としてブロック付きでメソッドを呼ぶことで$<数字 
> >を使うことができます。
>
> $KCODE = "UTF-8"
> test ="→abc←"
> print test.gsub(/→(.+?)←/){%Q[<a href="#{$1.upcase}"># 
> $1</a>]}
> #=> <a href="ABC">abc</a>
>


In This Thread

Prev Next