Skip to content

End of Life Ruby 3.0 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →

instance method

Regexp#match

rxp.match(str, pos=0) → matchdata or nil
rxp.match(str, pos=0) {|match| block } → obj

Returns a MatchData object describing the match, or nil if there was no match. This is equivalent to retrieving the value of the special variable $~ following a normal match. If the second parameter is present, it specifies the position in the string to begin the search.

Example
/(.)(.)(.)/.match("abc")[2]   #=> "b"
/(.)(.)/.match("abc", 1)[2]   #=> "c"

If a block is given, invoke the block with MatchData if match succeed, so that you can write

Example
/M(.*)/.match("Matz") do |m|
  puts m[0]
  puts m[1]
end

instead of

Example
if m = /M(.*)/.match("Matz")
  puts m[0]
  puts m[1]
end

The return value is a value from block execution in this case.

See also #match? #inspect #hash #named_captures also in 4.1 · 4.0 · 3.4 · 3.3 · 3.2 · 3.1