Ruby 运算符 "=~"

142
在 Ruby 中,我看到了一些操作符,但是我找不到 "=~"。 "=~" 是什么意思?我看到的程序中有这个操作符。
regexs = (/\d+/)
a = somestring
if a =~ regexs

我认为它在比较somestring是否等于数字,但是除此之外还有其他用途吗?=~操作符的正确定义是什么?


2
如果你想尝试 Ruby 正则表达式,我可以推荐 http://rubular.com/。 - Jonas Elfström
7
我们能否将另一个问题标记为重复,而不是这个问题?这个问题得到了更多的票数,无论是关于问题本身还是答案方面。此外,在我的测试中搜索ruby =~ operator,这个问题是谷歌、雅虎、必应和DuckDuckGo中第一个相关的搜索结果,这也解释了为什么这个问题获得了更多的投票。 - ryenus
3个回答

203

=~运算符将正则表达式与字符串匹配,如果找到匹配,则返回匹配在字符串中的偏移量,否则返回nil。

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

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

如上所示,您可以将字符串/正则表达式放置在运算符的任一侧。


48

这个运算符根据正则表达式匹配字符串。

s = 'how now brown cow'

s =~ /cow/ # => 14
s =~ /now/ # => 4
s =~ /cat/ # => nil
如果字符串匹配表达式,该运算符返回偏移量;如果不匹配,则返回nil。它比这稍微复杂一些:在此查看文档;这是String类中的一个方法。

4
文档很无用。花了45分钟搜索,这是我发现的最好的解释。谢谢。 - Padawan
重要提示,也称为(NB):仅适用于字符串而非数字。 - Gary
此外,根据文档,它仅匹配“第一个子字符串”: “返回与给定正则表达式匹配的第一个子字符串的整数索引,如果没有找到匹配项,则返回nil:”。 - Alien Life Form

18

=~是与正则表达式匹配的运算符,将返回匹配开始位置的索引(如果没有匹配,则返回nil)。

请参阅此处的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接