A regex is a kind of pattern that describes a set of strings. The process of finding out whether a given string is in the set is called matching. The result of such a matching is a Match object, which evaluates to
True in Boolean context if the string is in the set.
A regex is typically constructed by a regex literal
rx/ ^ab /; # describes all strings starting with 'ab'/ ^ ab /; # samerx/ \d ** 2/; # describes all strings containing at least two digits
A named regex can be defined with the
regex declarator followed by its definition in curly braces. Since any regex does
Callable introspection requires referencing via
my ;say .^name; # OUTPUT: «Regex␤»
To match a string against a regex, you can use the smartmatch operator:
my = 'abc' ~~ rx/ ^ab /;say .Bool; # OUTPUT: «True␤»say .orig; # OUTPUT: «abc␤»say .Str; # OUTPUT: «ab␤»say .from; # OUTPUT: «0␤»say .to; # OUTPUT: «2␤»
Or you can evaluate the regex in Boolean context, in which case it matches against the
= 'abc';if / ^ab /else
multi method ACCEPTS(Regex: Mu --> Match)multi method ACCEPTS(Regex: @)multi method ACCEPTS(Regex: %)
Matches the regex against the argument passed in. If the argument is Positional, it returns the first successful match of any list item. If the argument is Associative, it returns the first successful match of any key. Otherwise it interprets the argument as a Str and matches against it.
In the case of Positional and Associative matches, Nil is returned on failure.
multi method Bool(Regex: --> Bool)
Matches against the caller's $_ variable, and returns
True for a match or
False for no match.