除了下面两个陈述的编码风格之外还有什么区别吗?
/regex/ =~ "some_string_with_regex"
"some_string_with_regex" =~ /regex/
答案 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