0

Herokuで実行されているRailsを使用して、文字列で正規表現の一致が見つかったが、括弧内のグループに$1変数が設定されていないという状況に遭遇しました。これは、Herokuでの本番セットアップでのみ発生し、ローカルシステムでは発生しません(Rubyruby-1.9.2-p0を使用したRails3.0.7)。コードは

puts "**** gateway_reply=#{gateway_reply}"
match = gateway_reply =~ /ID: (\w+)/
msg_id = $1
puts "**** match=#{match}, msg_id ($1) = #{$1}"

私のローカルシステムでは、出力は

**** gateway_reply=ID: da2x7s5tjumtxtnk1krl8wps4wpasiee
**** match=0, msg_id ($1) = da2x7s5tjumtxtnk1krl8wps4wpasiee

本番システムでは、$1は設定されていません。

**** gateway_reply=ID: 93e4ca3590207761af6f3b5ba3545b36
**** match=0, msg_id ($1) = 

ここで何が起こっているのかについて何か答えはありますか?

4

1 に答える 1

0

私のために働く:

> gateway_reply='ID: da2x7s5tjumtxtnk1krl8wps4wpasiee'
> gateway_reply.match(/ID: (\w+)/)
> $1
=> "da2x7s5tjumtxtnk1krl8wps4wpasiee"

> gateway_reply =~ /ID: (\w+)/
=> 0
> $1
=> "da2x7s5tjumtxtnk1krl8wps4wpasiee"

~一致演算子の結果は一致の位置であることに注意してください

于 2013-04-16T21:30:05.673 に答える