匹配ruby正则表达式中的换行符“\n”
我试图理解为什么下面的结果返回false:(**我应该把“输出0”**)匹配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")
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