在ruby正则表达式中匹配换行符`\ n`

时间:2012-09-05 12:29:24

标签: ruby regex

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

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

也许有人可以解释。

我正在尝试从与String匹配的多行字符串生成Regexp。

提前致谢

2 个答案:

答案 0 :(得分:11)

puts将始终返回nil

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

你也可以使用:

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

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

注意:此示例中不需要m选项,但演示了如何在没有Regexp.new的情况下使用它。

答案 1 :(得分: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