Ruby中的"=〜"运算符是什么?

CCS*_*Sab 53 ruby operators

我在截屏视频中看到了这个,但无法弄清楚它是什么.参考表只是将其与其他运算符一起作为一般模式匹配运算符.

eal*_*ent 46

它将字符串与正则表达式匹配.

'hello' =~ /^h/ # => 0

如果没有匹配,它将返回nil.如果你传递了无效的参数(即左侧或右侧不正确),它将抛出一个TypeError或返回false.


Ju *_*ira 16

来自ruby-doc:

str =~ obj => fixnum or nil

匹配 - 如果obj是Regexp,则将其用作匹配str的模式,并返回匹配开始的偏移位置,如果没有匹配则返回nil.否则,调用obj.=〜,将str作为参数传递.Object中的default =〜返回false.

"cat o' 9 tails" =~ /\d/   #=> 7
"cat o' 9 tails" =~ 9      #=> false
Run Code Online (Sandbox Code Playgroud)

  • “返回比赛开始的位置”,对我来说很重要:)一直在谷歌中寻找答案..在这里找到了它,谢谢! (2认同)

Tes*_*rex 5

嗯,引用是正确的,它是“匹配此正则表达式”运算符。

if var =~ /myregex/ then something end
Run Code Online (Sandbox Code Playgroud)


mvw*_*mvw 5

正如其他答案已经指出的那样,=~是正则表达式与字符串匹配运算符。

注意:=~运算符不可交换

请考虑下面来自ruby​​ 文档站点的注释,因为我只看到了第一种形式

str =~ regexp 
Run Code Online (Sandbox Code Playgroud)

在其他答案中使用:

注意:str =~ regexp与 不同regexp =~ str。仅在第二种情况下,从命名捕获组捕获的字符串才会分配给局部变量。

这是第二种形式的文档:链接