10

我试图理解为什么以下返回错误:(**我应该把“输出0”**)

puts "a\nb" =~ Regexp.new(Regexp.escape("a\nb"), Regexp::MULTILINE | Regexp::EXTENDED)

也许有人可以解释。

我正在尝试从与字符串匹配的多行字符串生成正则表达式。

提前致谢

4

2 回答 2

13

puts总会回来nil的。

您的代码应该可以正常工作,尽管很长。=~返回匹配的位置,即 0。

您还可以使用:

"a\nb" =~ /a\sb/m

或者

"a\nb" =~ /a\nb/m

注意:该m选项在此示例中不是必需的,但演示了如何在没有Regexp.new.

于 2012-09-05T12:47:48.913 回答
1

大概,puts导致了这个

1.9.3-194 (main):0 > puts ("a\nb" =~ Regexp.new(Regexp.escape("a\nb"), Regexp::MULTILINE | Regexp::EXTENDED) )
0
=> nil


1.9.3-194 (main):0 > "a\nb" =~ Regexp.new(Regexp.escape("a\nb"), Regexp::MULTILINE | Regexp::EXTENDED)
=> 0
于 2012-09-05T12:39:57.820 回答