2011-04-25 44 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