当前位置:  开发笔记 > 后端 > 正文

Ruby Regex MatchData对象捕获奇怪的行为方法

如何解决《RubyRegexMatchData对象捕获奇怪的行为方法》经验,为你挑选了1个好方法。

所以如果你采用Ruby 2.1.2正则表达式对象

reg = /(?!gemspec)gem.*/

并在以下行上调用匹配:

"gem 'wirble', :group => :development"

您将获得以下MatchData对象:

 # :development"> 

如果你打电话

 reg.match("gem 'wirble', :group => :development").to_a
 => ["gem 'wirble', :group => :development"] 

但如果你打电话

reg.match("gem 'wirble', :group => :development").captures
 => [] 

MatchData(http://ruby-doc.org/core-2.1.2/MatchData.html#method-i-captures)的文档指出#captures方法应该返回与匹配时#to_a方法相同的值从该Regex调用返回的对象.在这种情况下,它不会出现这种情况.为什么会出现差异?这是一个错误吗?

帖子非常简洁,如果您需要任何其他解释,请告诉我!



1> vutran..:

这不是一个错误.它实际上工作正常.#captures仅返回捕获的内容,这些内容表示圆括号内的组匹配的内容().如果你修改你的正则表达式/(?!gemspec)gem(.*)/(注意(.*)部分),reg.match("gem 'wirble', :group => :development").captures将返回[" 'wirble', :group => :development"].

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有