当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby MatchData类用法及代码示例


MatchData 封装了将 Regexp 与字符串匹配的结果。它由 Regexp#match String#match 返回,并存储在 Regexp.last_match 返回的全局变量中。

用法:

url = 'https://docs.ruby-lang.org/en/2.5.0/MatchData.html'
m = url.match(/(\d\.?)+/)   # => #<MatchData "2.5.0" 1:"0">
m.string                    # => "https://docs.ruby-lang.org/en/2.5.0/MatchData.html"
m.regexp                    # => /(\d\.?)+/
# entire matched substring:
m[0]                        # => "2.5.0"

# Working with unnamed captures
m = url.match(%r{([^/]+)/([^/]+)\.html$})
m.captures                  # => ["2.5.0", "MatchData"]
m[1]                        # => "2.5.0"
m.values_at(1, 2)           # => ["2.5.0", "MatchData"]

# Working with named captures
m = url.match(%r{(?<version>[^/]+)/(?<module>[^/]+)\.html$})
m.captures                  # => ["2.5.0", "MatchData"]
m.named_captures            # => {"version"=>"2.5.0", "module"=>"MatchData"}
m[:version]                 # => "2.5.0"
m.values_at(:version, :module)
                            # => ["2.5.0", "MatchData"]
# Numerical indexes are working, too
m[1]                        # => "2.5.0"
m.values_at(1, 2)           # => ["2.5.0", "MatchData"]

全局变量等价

最后 MatchData 的部分(由 Regexp.last_match 返回)也被别名为全局变量:

另请参阅 Regexp 文档中的“Special global variables” 部分。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 MatchData类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。