匹配ruby正则表达式中的换行符“\n”

匹配ruby正则表达式中的换行符“\n”,ruby,regex,Ruby,Regex,我试图理解为什么下面的结果返回false:(**我应该把“输出0”**) put“a\nb”=~Regexp.new(Regexp.escape(“a\nb”),Regexp::MULTILINE | Regexp::EXTENDED) 也许有人能解释一下 我正在尝试从一个多行字符串生成一个Regexp,该字符串将匹配该字符串 提前感谢可能是放造成的 1.9.3-194 (main):0 > puts ("a\nb" =~ Regexp.new(Regexp.escape("a\nb")

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

put“a\nb”=~Regexp.new(Regexp.escape(“a\nb”),Regexp::MULTILINE | Regexp::EXTENDED)
也许有人能解释一下

我正在尝试从一个多行字符串生成一个Regexp,该字符串将匹配该字符串


提前感谢

可能是放造成的

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

put
将始终返回
nil

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

您还可以使用:

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


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

我不明白,我在问为什么没有匹配项。匹配的位置0已返回hh,我现在明白了,我想我误解了=~运算符。如果字符串与Regexp匹配,是否有返回布尔值的方法?@Arth您可以这样做:
!!(“a\nb”=~/a\sb/m)
可以!令人惊讶的是,字符串或Regexp类中没有内置函数。两个版本中都不需要选项
m
\s
\n
即使没有它也会匹配
\n
。@undur\u gongor我知道。我想表明,可以添加选项,而不必使用
Regexp.new
"a\nb" =~ /a\nb/m