Regex::MatchData
class Regex::MatchData
Overview
Regex::MatchData
is the type of the special variable $~
, and is the type returned by Regex#match
and String#match
. It encapsulates all the results of a regular expression match.
if md = "Crystal".match(/[p-s]/) md.string # => "Crystal" md[0] # => "r" md[1]? # => nil end
Many Regex::MatchData
methods deal with capture groups, and accept an integer argument to select the desired capture group. Capture groups are numbered starting from 1
, so that 0
can be used to refer to the entire regular expression without needing to capture it explicitly.
Defined in:
regex/match_data.crInstance Method Summary
- #==(other : Regex::MatchData)
- #[](n)
Returns the match of the nth capture group, or raises an
IndexError
if there is no nth capture group. - #[](group_name : String)
Returns the match of the capture group named by group_name, or raises an
ArgumentError
if there is no such named capture group. - #[]?(group_name : String)
Returns the match of the capture group named by group_name, or
nil
if there is no such named capture group. - #[]?(n)
Returns the match of the nth capture group, or
nil
if there isn't an nth capture group. - #begin(n = 0)
Return the position of the first character of the nth match.
- #byte_begin(n = 0)
Return the position of the first byte of the nth match.
- #byte_end(n = 0)
Return the position of the next byte after the match.
- #clone
- #dup
- #end(n = 0)
Return the position of the next character after the match.
- #inspect(io : IO)
- #post_match
Returns the part of the original string after the match.
- #pre_match
Returns the part of the original string before the match.
- #regex : Regex
Returns the original regular expression.
- #size : Int32
Returns the number of capture groups, including named capture groups.
- #string : String
Returns the original string.
- #to_s(io : IO)
Instance methods inherited from class Reference
==(other : self)==(other) ==, dup dup, hash hash, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference)
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Class methods inherited from class Reference
new new Instance methods inherited from class Object
!=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, class class, dup dup, hash hash, inspect(io : IO)
inspect inspect, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json to_json, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try
Class methods inherited from class Object
from_json(string_or_io, root : String) : selffrom_json(string_or_io) : self from_json, from_yaml(string_or_io) : self from_yaml
Instance Method Detail
def ==(other : Regex::MatchData)Source
def [](n)Source
Returns the match of the nth capture group, or raises an IndexError
if there is no nth capture group.
"Crystal".match(/r(ys)/).not_nil![1] # => "ys" "Crystal".match(/r(ys)/).not_nil![2] # raises IndexError
def [](group_name : String)Source
Returns the match of the capture group named by group_name, or raises an ArgumentError
if there is no such named capture group.
"Crystal".match(/r(?<ok>ys)/).not_nil!["ok"] # => "ys" "Crystal".match(/r(?<ok>ys)/).not_nil!["ng"] # raises ArgumentError
def []?(group_name : String)Source
Returns the match of the capture group named by group_name, or nil
if there is no such named capture group.
"Crystal".match(/r(?<ok>ys)/).not_nil!["ok"]? # => "ys" "Crystal".match(/r(?<ok>ys)/).not_nil!["ng"]? # => nil
def []?(n)Source
Returns the match of the nth capture group, or nil
if there isn't an nth capture group.
When n is 0
, returns the match for the entire Regex
.
"Crystal".match(/r(ys)/).not_nil![0]? # => "rys" "Crystal".match(/r(ys)/).not_nil![1]? # => "ys" "Crystal".match(/r(ys)/).not_nil![2]? # => nil
def begin(n = 0)Source
Return the position of the first character of the nth match.
When n is 0
or not given, uses the match of the entire Regex
. Otherwise, uses the match of the nth capture group.
"Crystal".match(/r/).not_nil!.begin(0) # => 1 "Crystal".match(/r(ys)/).not_nil!.begin(1) # => 2 "クリスタル".match(/リ(ス)/).not_nil!.begin(0) # => 1
def byte_begin(n = 0)Source
Return the position of the first byte of the nth match.
When n is 0
or not given, uses the match of the entire Regex
. Otherwise, uses the match of the nth capture group.
"Crystal".match(/r/).not_nil!.byte_begin(0) # => 1 "Crystal".match(/r(ys)/).not_nil!.byte_begin(1) # => 2 "クリスタル".match(/リ(ス)/).not_nil!.byte_begin(0) # => 3
def byte_end(n = 0)Source
Return the position of the next byte after the match.
When n is 0
or not given, uses the match of the entire Regex
. Otherwise, uses the match of the nth capture group.
"Crystal".match(/r/).not_nil!.byte_end(0) # => 2 "Crystal".match(/r(ys)/).not_nil!.byte_end(1) # => 4 "クリスタル".match(/リ(ス)/).not_nil!.byte_end(0) # => 9
def cloneSource
def dupSource
def end(n = 0)Source
Return the position of the next character after the match.
When n is 0
or not given, uses the match of the entire Regex
. Otherwise, uses the match of the nth capture group.
"Crystal".match(/r/).not_nil!.end(0) # => 2 "Crystal".match(/r(ys)/).not_nil!.end(1) # => 4 "クリスタル".match(/リ(ス)/).not_nil!.end(0) # => 3
def post_matchSource
Returns the part of the original string after the match. If the match ends at the end of the string, returns the empty string.
"Crystal".match(/yst/).not_nil!.post_match # => "al"
def pre_matchSource
Returns the part of the original string before the match. If the match starts at the start of the string, returns the empty string.
"Crystal".match(/yst/).not_nil!.pre_match # => "Cr"
def regex : RegexSource
Returns the original regular expression.
"Crystal".match(/[p-s]/).not_nil!.regex # => /[p-s]/
def size : Int32Source
Returns the number of capture groups, including named capture groups.
"Crystal".match(/[p-s]/).not_nil!.size # => 0 "Crystal".match(/r(ys)/).not_nil!.size # => 1 "Crystal".match(/r(ys)(?<ok>ta)/).not_nil!.size # => 2
def string : StringSource
Returns the original string.
"Crystal".match(/[p-s]/).not_nil!.string # => "Crystal"
© 2012–2017 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.22.0/Regex/MatchData.html