當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby MatchData類用法及代碼示例


本文簡要介紹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類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。