0

使用在 Heroku 上运行的 Rails,我遇到了在字符串中找到正则表达式匹配但没有为括号中的组设置 $1 变量的情况。这只发生在我在 Heroku 上的生产设置中,而不是在我的本地系统上(带有 Ruby ruby​​-1.9.2-p0 的 Rails 3.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 回答