【问题标题】: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​​ 文档作为一种懒惰的解决方案扔出去,并看到更多真正有帮助的深入答案。

标签: ruby operators


【解决方案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】:

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

            【讨论】:

              猜你喜欢
              • 2021-12-04
              • 2011-03-20
              • 2011-12-03
              • 2011-09-14
              • 1970-01-01
              • 2013-12-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多