In Cool§
See primary documentation in context for method match.
method match(Cool:D: $target, *%adverbs)
Coerces the invocant to Stringy and calls the method match on it.
In Str§
See primary documentation in context for method match.
method match($pat, :continue(:$c), :pos(:$p), :global(:$g), :overlap(:$ov), :exhaustive(:$ex), :st(:$nd), :rd(:$th), :$nth, :$x --> Match)
Performs a match of the string against $pat and returns a Match object if there is a successful match; it returns (Any) otherwise. Matches are stored in the default match variable $/. If $pat is not a Regex object, match will coerce the argument to a Str and then perform a literal match against $pat.
A number of optional named parameters can be specified, which alter how the match is performed.
:continue
The :continue adverb takes as an argument the position where the regex should start to search. If no position is specified for :c it will default to 0 unless $/ is set, in which case it defaults to $/.to.
:pos
Takes a position as an argument. Fails if regex cannot be matched from that position, unlike :continue.
:global
Instead of searching for just one match and returning a Match object, search for every non-overlapping match and return them in a List.
:overlap
Finds all matches including overlapping matches, but only returns one match from each starting position.
:exhaustive
Finds all possible matches of a regex, including overlapping matches and matches that start at the same position.
:st, :nd, :rd, :nth
Returns the nth match in the string. The argument can be a Numeric or an Iterable producing monotonically increasing numbers (that is, the next produced number must be larger than the previous one). The Iterable will be lazily reified and if non-monotonic sequence is encountered an exception will be thrown.
If Iterable argument is provided the return value and $/ variable will be set to a possibly-empty List of Match objects.
:x
Takes as an argument the number of matches to return, stopping once the specified number of matches has been reached. The value must be a Numeric or a Range; other values will cause .match to return a Failure containing an X::Str::Match::x exception.
Examples:
say "properly".match('perl'); # OUTPUT: «「perl」» say "properly".match(/p.../); # OUTPUT: «「prop」» say "1 2 3".match([1,2,3]); # OUTPUT: «「1 2 3」» say "a1xa2".match(/a./, :continue(2)); # OUTPUT: «「a2」» say "abracadabra".match(/ a .* a /, :exhaustive); # OUTPUT: «(「abracadabra」 「abracada」 「abraca」 「abra」 「acadabra」 「acada」 「aca」 「adabra」 「ada」 「abra」)» say 'several words here'.match(/\w+/,:global); # OUTPUT: «(「several」 「words」 「here」)» say 'abcdef'.match(/.*/, :pos(2)); # OUTPUT: «「cdef」» say "foo[bar][baz]".match(/../, :1st); # OUTPUT: «「fo」» say "foo[bar][baz]".match(/../, :2nd); # OUTPUT: «「o[」» say "foo[bar][baz]".match(/../, :3rd); # OUTPUT: «「ba」» say "foo[bar][baz]".match(/../, :4th); # OUTPUT: «「r]」» say "foo[bar][baz]bada".match('ba', :x(2)); # OUTPUT: «(「ba」 「ba」)»