我試圖理解爲什麼以下返回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