「うまくいかなかった」とはどういう意味かわかりません。=~
正規表現が一致を見つけたインデックスを返します。
"The sky is blue....but sometimes it turns to orange." =~ /(the sky is blue)|(orange sky)|(sky is blue but orange)/i
# => 0
0
「空は青い」が一致したインデックスです。一致するものが見つからない場合はを=~
返しますnil
。0
は「truthy」であり、Rubyでは「falsey」であるため、一致の結果をステートメントnil
で使用できます。if
それらがあなたが探している正確なフレーズである場合、あなたの既存の正規表現はうまく機能するはずです。
"The sky is green....but sometimes it turns to orange sky." =~ /(the sky is blue)|(orange sky)|(sky is blue but orange)/i
# => 46
正規表現を実行する前に、 String#squeezeメソッドを使用して複数のスペースを削除できます。
"The sky is green....but sky is blue but orange sometimes.".squeeze!(" ") =~ /(the sky is blue)|(orange sky)|(sky is blue but orange)/i
# => 24
それは役に立ちますか?