繁体   English   中英

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

[英]What is the “=~” operator in Ruby?

我在屏幕录像中看到了这一点,无法弄清楚它是什么。 参考表只是将其与其他运算符组合在一起作为常规模式匹配运算符。

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

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

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

ruby-doc

str =~ obj => fixnum or nil

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

"cat o' 9 tails" =~ /\d/   #=> 7
"cat o' 9 tails" =~ 9      #=> false

好吧,引用是正确的,它是“ matches this regex”运算符。

if var =~ /myregex/ then something end

正如其他答案所述, =~是正则表达式vs字符串匹配运算符。

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

请考虑以下来自ruby doc网站的注释,因为我仅看到第一种形式

str =~ regexp 

在其他答案中使用:

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

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

正则表达式字符串匹配。 以下是运算符的详细列表: http : //phrogz.net/programmingruby/tut_expressions.html#table_7.1

正则表达式字符串匹配:

如果url =〜/google.com/,则为true

您可以将“ =〜”读为“匹配”。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM