2010-06-11 114 views
45

我在屏幕截图上看到了这一点,无法弄清楚它是什么。参考表只需将其作为一般模式匹配运算符与其他运算符一起存入。Ruby中的“=〜”运算符是什么?

+0

查找它http://www.ruby-doc.org/core/ – 2010-06-11 20:09:30

+11

@ user97370:常常红宝石文档用作轻率解决方案来回答所有问题,而不会意识到ruby文档并不总是一个易于理解的网站。很多时候(大多数情况下)我从ruby文档开始,无法理解Google的加密和贫乏的解释,只是发现Google上也没有解决方案。一个人不只是谷歌“Ruby =〜”或“Ruby =〜方法”或“Ruby =〜运营商”来获得答案。很高兴看到更少的人将ruby文档作为懒惰的解决方案扔出去,并看到更多深入的实际帮助。 “ – Padawan 2015-09-10 16:07:53

回答

42

它将字符串与正则表达式匹配。

'hello' =~ /^h/ # => 0

如果没有匹配,它将返回nil。如果您通过了无效参数(即左侧或右侧不正确),它将会抛出TypeError或返回false

4

那么,参考是正确的,它是“匹配这个正则表达式”的运算符。

if var =~ /myregex/ then something end 
-1

我相信这是一个模式匹配运算符与正则表达式一起使用。

15

ruby-doc

str =~ obj => fixnum or nil

匹配 - 如果obj是一个正则表达式,使用它作为一个模式来匹配海峡,并返回偏移位置匹配开始,如果没有匹配,则为零。否则,调用obj。=〜,将str作为参数传递。在Object中默认=〜返回false。

"cat o' 9 tails" =~ /\d/ #=> 7 
"cat o' 9 tails" =~ 9  #=> false 
+1

”返回比赛开始的位置“,对我来说是重要的一点:)已经淘到Google的答案..在这里找到了谢谢! – 2012-05-09 19:57:46

+0

为什么第二个示例返回false?是因为'9'不是一个字符串吗? – 2018-02-20 16:38:28

1

正则表达式匹配字符串:

把真,如果URL =〜/google.com/

你可以阅读 '=〜' 作为 '是匹配'。

4

正如其他答案已经陈述,=~是正则表达式与字符串匹配运算符。

注:=~运算符是不可交换

请考虑下面的注释从ruby doc site,因为我已经看到,但只有第一种形式

str =~ regexp 

在其他的答案中:

注意:str =~ regexp不等于regexp =~ str。从指定捕获组捕获的字符串 仅在 第二种情况下被分配给局部变量。

下面是第二种形式的文档:link