web-dev-qa-db-ja.com

ruby演算子「=〜」

Rubyでは、いくつかの演算子を読みましたが、=~が見つかりませんでした。 =~とは何ですか、それはどういう意味ですか?私が見たプログラムは

regexs = (/\d+/)
a = somestring
if a =~ regexs

somestringが数字と等しいかどうかを比較していたと思いますが、他の使用法はありますか?=~演算子の適切な定義は何ですか?

104
kamen raider

=~演算子は、正規表現と文字列を照合し、見つかった場合は文字列からの一致のオフセットを返し、それ以外の場合はnilを返します。

/mi/ =~ "hi mike" # => 3 
"hi mike" =~ /mi/ # => 3 

"mike" =~ /Ruby/ # => nil 

上記のように、演算子の両側に文字列/正規表現を配置できます。

151
Mike Lewis

この演算子は、文字列を正規表現と照合します。

s = 'how now brown cow'

s =~ /cow/ # => 14
s =~ /now/ # => 4
s =~ /cat/ # => nil

文字列が式と一致する場合、演算子はオフセットを返し、一致しない場合はnilを返します。それよりもやや複雑です: こちらのドキュメントをご覧ください。Stringクラスのメソッドです

36
DigitalRoss

=〜は正規表現に一致するための演算子で、一致の開始のインデックスを返します(一致しない場合はnil)。

ドキュメントについては here を参照してください。

15
Tim Destan