红宝石运算符“=〜” [重复]
Posted
技术标签:
【中文标题】红宝石运算符“=〜” [重复]【英文标题】: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 中的第一个相关命中,这也解释了为什么这个问题有更多的选票。
【参考方案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。
【讨论】:
以上是关于红宝石运算符“=〜” [重复]的主要内容,如果未能解决你的问题,请参考以下文章