Documentation for routine match

Documentation for routine match, assembled from the following types:

class Any

From Any

(Any) method match

Defined As:

    method match(--> TODO)

TODO

class Cool

From Cool

(Cool) routine match

Defined as:

multi method match(Cool:D: $target*%adverbs)

Coerces the invocant to Str and calls the method match on it.

class Str

From Str

(Str) 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, and (Any) otherwise. Matches are stored in $/. 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.

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.

Takes a position as an argument. Fails if regex cannot be matched from that position, unlike :continue.

Instead of searching for just one match and returning a Match object, search for every non-overlapping match and return them in a List.

Finds all matches including overlapping matches, but only returns one match from each starting position.

Finds all possible matches of a regex, including overlapping matches and matches that start at the same position.

Takes an integer as an argument and returns the nth match in the string.

Takes as an argument the number of matches to return, stopping once the specified number of matches has been reached.

Examples:

say "properly".match('perl');                     # OUTPUT: «「perl」␤» 
say "properly".match(/p.../);                     # OUTPUT: «「perl」␤» 
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」)␤»