【问题标题】:Does order matter on the =~ operator?=~ 运算符的顺序是否重要?
【发布时间】:2011-10-30 15:57:29
【问题描述】:

以下两个语句除了编码风格有什么不同吗?

/regex/ =~ "some_string_with_regex"

"some_string_with_regex" =~ /regex/

【问题讨论】:

  • 使用 ri 查看Regexp#=~String#=~
  • 从来不知道那个工具。谢谢!
  • 非常好用。也可以查看一个简单的ri =~

标签: ruby regex operators


【解决方案1】:

是的,有区别。如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#~=

【讨论】:

  • 使用块引用使&lt;lhs&gt;等消失。
猜你喜欢
  • 2019-01-07
  • 2015-05-10
  • 2021-05-18
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 2015-04-17
相关资源
最近更新 更多