我试图理解为什么以下返回false:(**我应该把“输出0” **)匹配换行符` N`在红宝石的正则表达式
puts "a\nb" =~ Regexp.new(Regexp.escape("a\nb"), Regexp::MULTILINE | Regexp::EXTENDED)
也许有人可以解释。
我想从一个多行字符串生成一个正则表达式来匹配字符串。
在此先感谢
我试图理解为什么以下返回false:(**我应该把“输出0” **)匹配换行符` N`在红宝石的正则表达式
puts "a\nb" =~ Regexp.new(Regexp.escape("a\nb"), Regexp::MULTILINE | Regexp::EXTENDED)
也许有人可以解释。
我想从一个多行字符串生成一个正则表达式来匹配字符串。
在此先感谢
puts
总是返回nil
。
你的代码应该可以正常工作,尽管冗长。 =~
返回比赛是0
的位置你也可以使用:
"a\nb" =~ /a\sb/m
或
"a\nb" =~ /a\nb/m
注:m
选项是没有必要在这个例子中,但演示了如何它将被用于没有Regexp.new
。
也许,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
如果String匹配Regexp,是否有返回布尔值的方法? – Arth
@Arth你可以这样做:'!!(“a \ nb”=〜/ a \ sb/m)' –
可以!令人惊讶的是,String或Regexp类中没有内置函数。 – Arth