Ruby 中的“=~”运算符是啥?
Posted
技术标签:
【中文标题】Ruby 中的“=~”运算符是啥?【英文标题】:What is the "=~" operator in Ruby?Ruby 中的“=~”运算符是什么? 【发布时间】:2011-03-02 20:03:02 【问题描述】:我在截屏视频中看到了这个,但不知道它是什么。参考表只是将其与其他运算符一起作为通用模式匹配运算符。
【问题讨论】:
在ruby-doc.org/core寻找它 @user97370:很多时候 ruby 文档被用作一个轻率的解决方案来回答所有问题,而没有意识到 ruby 文档并不总是一个易于理解的站点。很多时候(大部分时间)我从 ruby 文档开始,无法理解加密的、贫乏的解释然后谷歌,只是发现谷歌也没有解决方案。不能简单地通过 Google 搜索“Ruby =~”或“Ruby =~ 方法”或“Ruby =~ 运算符”来获得答案。很高兴看到越来越少的人将 ruby 文档作为一种懒惰的解决方案扔出去,并看到更多真正有帮助的深入答案。 【参考方案1】:它将字符串与正则表达式匹配。
'hello' =~ /^h/ # => 0
如果没有匹配,它将返回nil
。如果您传递给它无效的参数(即左侧或右侧不正确),它将抛出 TypeError
或返回 false
。
【讨论】:
【参考方案2】:来自ruby-doc:
str =~ obj => fixnum or nil
Match——如果 obj 是 Regexp,则将其用作匹配 str 的模式,并返回匹配开始的偏移位置,如果没有匹配则返回 nil。否则,调用 obj.=~,将 str 作为参数传递。 Object 中的默认 =~ 返回 false。
"cat o' 9 tails" =~ /\d/ #=> 7
"cat o' 9 tails" =~ 9 #=> false
【讨论】:
“返回比赛开始的位置”,对我来说很重要 :) 一直在谷歌搜索答案..在这里找到了谢谢! 为什么第二个例子返回false?是不是因为9
不是字符串?
是的,要测试字符串“9”,您需要将其括在正斜杠中,以便将其解释为正则表达式:/9/【参考方案3】:
嗯,引用是正确的,它是“匹配这个正则表达式”运算符。
if var =~ /myregex/ then something end
【讨论】:
【参考方案4】:正如其他答案已经说明的那样,=~
是正则表达式与字符串匹配运算符。
注意:=~
运算符不可交换
请考虑下面来自ruby doc site 的注释,因为我只看到了第一种形式
str =~ regexp
用于其他答案:
注意:
str =~ regexp
与regexp =~ str
不同。捕获的字符串 来自命名的捕获组仅在 第二种情况。
这是第二种形式的文档:link
【讨论】:
【参考方案5】:正则表达式字符串匹配。以下是运营商的详细列表:http://phrogz.net/programmingruby/tut_expressions.html#table_7.1
【讨论】:
【参考方案6】:正则表达式字符串匹配:
如果 url =~ /google.com/ 则为真
您可以将“=~”读作“匹配”。
【讨论】:
【参考方案7】:我相信这是一个与正则表达式一起使用的模式匹配运算符。
【讨论】:
以上是关于Ruby 中的“=~”运算符是啥?的主要内容,如果未能解决你的问题,请参考以下文章