class Regex
class Regex is Method { }
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 /; # same
rx/ \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 &
-sigil.
my regex R { \N };
say &R.^name; # OUTPUT: «Regex»
To match a string against a regex, you can use the smartmatch operator:
my $match = 'abc' ~~ rx/ ^ab /;
say $match.Bool; # OUTPUT: «True»
say $match.orig; # OUTPUT: «abc»
say $match.Str; # OUTPUT: «ab»
say $match.from; # OUTPUT: «0»
say $match.to; # OUTPUT: «2»
Or you can evaluate the regex in Boolean context, in which case it matches
against the $_
variable
$_ = 'abc';
if / ^ab / {
say '"abc" begins with "ab"';
}
else {
say 'This is a weird alternative Universe';
}
Methods
method ACCEPTS
multi method ACCEPTS(Regex:D: Mu --> Match:D)
multi method ACCEPTS(Regex:D: @)
multi method ACCEPTS(Regex:D: %)
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.
method Bool
multi method Bool(Regex:D: --> Bool:D)
Matches against the caller's $_ variable, and returns True
for a match or
False
for no match.