2011-04-25 55 views
81

在ruby中,我讀了一些操作符,但是我找不到=~。什麼是=~,或者這是什麼意思?我看到該程序具有ruby​​ operator「=〜」

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

我認爲這是比較,如果somestring等於數字,但,有沒有其他的用法,以及什麼是=~操作的正確定義是什麼?

+1

如果你想玩Ruby正則表達式,我可以推薦http://rubular.com/ – 2011-04-25 18:08:26

+3

我們可以把另一個問題標記爲重複的而不是這個嗎? **就問題本身和答案而言,這個人擁有更多的選票**。另外,搜索'ruby =〜operator',**這個問題是我的測試中Google,Yahoo,Bing和DuckDuckGo中第一個相關的命中**,這也解釋了爲什麼這個人有更多的選票。 – ryenus 2014-10-24 05:07:35

+0

同意@ryenus。 – Padawan 2015-09-10 16:16:53

回答

123

=~運算符將正則表達式與字符串進行匹配,如果找到該匹配項,則返回匹配項的偏移量,否則返回nil。

ruby-1.9.2-p136 :003 > /mi/ =~ "hi mike" 
=> 3 
ruby-1.9.2-p136 :004 > "hi mike" =~ /mi/ 
=> 3 

ruby-1.9.2-p136 :005 > "mike" =~ /ruby/ 
=> nil 

如上所示,您可以將字符串/正則表達式放在操作符的任一側。

12

=〜是匹配正則表達式的運算符,它將返回匹配開始的索引(如果不匹配,則返回nil)。

查看here的文檔。

28

此運算符將字符串與正則表達式匹配。

>> s = 'how now brown cow' 

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

如果字符串匹配表達式,則運算符返回偏移量,如果不匹配,則返回nil。它比這個稍微複雜一點:see documentation here; it's a method in the String class.

+1

文檔無用。一直在尋找45分鐘,這是我遇到的最好的解釋。謝謝。 – Padawan 2015-09-10 16:23:53