【问题标题】:ruby operator "=~" [duplicate]红宝石运算符“=〜” [重复]
【发布时间】:2011-08-12 11:42:34
【问题描述】:

在 ruby​​ 中,我阅读了一些运算符,但找不到 =~=~ 是什么意思?我看到的程序有

regexs = (/\d+/)
a = somestring
if a =~ regexs

我认为这是在比较 somestring 是否等于数字,但是还有其他用法吗?=~ 运算符的正确定义是什么?

【问题讨论】:

  • 如果你想玩转 Ruby 正则表达式,我可以推荐 rubular.com
  • 我们可以将另一个问题标记为重复问题,而不是这个问题吗? 就问题本身和答案而言,这个人的票数更多。另外,搜索ruby =~ operator这个问题是我测试中Google、Yahoo、Bing 和DuckDuckGo 中的第一个相关命中,这也解释了为什么这个问题有更多的选票。

标签: ruby operators


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    此运算符将字符串与正则表达式匹配。

    s = 'how now brown cow'
    
    s =~ /cow/ # => 14
    s =~ /now/ # => 4
    s =~ /cat/ # => nil
    

    如果字符串与表达式匹配,则运算符返回偏移量,如果不匹配,则返回 nil。比这稍微复杂一点:see documentation here; it's a method in the String class.

    【讨论】:

    • 文档没用。搜索了 45 分钟,这是我遇到的最好的解释。谢谢。
    • 重要点又名(NB):仅适用于字符串而不是数字。
    • 另外,它仅根据文档匹配“第一个子字符串”:“返回与给定正则表达式匹配的第一个子字符串的整数索引,如果未找到匹配项,则返回 nil:”
    【解决方案3】:

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

    有关文档,请参阅 here

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 2011-04-28
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      相关资源
      最近更新 更多