Dre*_*rew 6 ruby regex operators
除了下面两个语句的编码风格之外还有什么区别吗?
/regex/ =~ "some_string_with_regex"
"some_string_with_regex" =~ /regex/
是的,有区别.如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)