红宝石运算符“=〜” [重复]

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。

【讨论】:

以上是关于红宝石运算符“=〜” [重复]的主要内容,如果未能解决你的问题,请参考以下文章

红宝石,!!运算符(a/k/a 双键)[重复]

“:foo”在红宝石中是啥意思[重复]

红宝石块? : 表达式 [重复]

红宝石运算符 ||= 智能吗?

红宝石管道操作员

红宝石中字符串的异或