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

Dre*_*rew 6 ruby regex operators

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

/regex/ =~ "some_string_with_regex"

"some_string_with_regex" =~ /regex/

Dog*_*ert 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"
Run Code Online (Sandbox Code Playgroud)

...

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

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

串#〜=