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 =~ regexpregexp =~ str 不同。捕获的字符串 来自命名的捕获组仅在 第二种情况。

这是第二种形式的文档:link

【讨论】:

【参考方案5】:

正则表达式字符串匹配。以下是运营商的详细列表:http://phrogz.net/programmingruby/tut_expressions.html#table_7.1

【讨论】:

【参考方案6】:

正则表达式字符串匹配:

如果 url =~ /google.com/ 则为真

您可以将“=~”读作“匹配”。

【讨论】:

【参考方案7】:

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

【讨论】:

以上是关于Ruby 中的“=~”运算符是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby 中,“=>”是啥意思,它是如何工作的? [复制]

& 是啥意思。 (& 点)在 Ruby 中是啥意思?

C# ?? Ruby 中的运算符?

erb中的Ruby三元运算符?

python中的[][](双方括号运算符)运算符是啥?

Java 中的 /= 运算符是啥?