=〜运算符的顺序是否重要?

时间:2011-08-19 14:01:49

标签: ruby regex operators

除了下面两个陈述的编码风格之外还有什么区别吗?

/regex/ =~ "some_string_with_regex"

"some_string_with_regex" =~ /regex/

1 个答案:

答案 0 :(得分:5)

是的,有区别。如http://www.ruby-doc.org/core/classes/Regexp.html#M001232

中所述
  

如果=~与带有命名捕获的正则表达式文字一起使用,则会被捕获   字符串(或nil)分配给捕获命名的局部变量   名。

/(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/ =~ "  x = y  "
p lhs    #=> "x" 
p rhs    #=> "y"
  

...

     

如果正则表达式位于右侧,则不会进行分配   侧。

"  x = y  " =~ /(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/
p lhs, rhs # undefined local variable

String#~=