Chapter 16. Fancier Regular Expressions
You won’t see all the rest of the regular expression syntax in this chapter, but you’ll see the syntax you’ll use the most. There’s much more to patterns, but this should get you most of the way through common problems. With grammars (Chapter 17), the power of even simple patterns will become apparent.
Quantifiers
Quantifiers allow
you to repeat a part of a pattern. Perhaps you want to match
several of the same letter in a row—an a followed by
one or more b’s then another a.
You don’t care how many b’s there are as long as
there’s at least one of them. The +
quantifier matches the immediately preceding part of the pattern one or
more times:
my @strings = < Aa Aba Abba Abbba Ababa >; for @strings { put $_, ' ', m/ :i ab+ a / ?? 'Matched!' !! 'Missed!'; }
The first Str
here doesn’t match because there
isn’t at least one b. All of the others have an
a followed by one or more bs and
another a:
Aa Missed! Aba Matched! Abba Matched! Abbba Matched! Ababa Matched!
A quantifier only applies to the part of the pattern immediately in
front of it—that’s the b
, not the
ab
. Group the ab
and apply the
quantifier to the group (which counts as one thingy):
my @strings = < Aa Aba Abba Abbba Ababa >; for @strings { put $_, ' ', m/ :i [ab]+ a / ?? 'Matched!' !! 'Missed!'; }
Now different Str
s match. The ones with repeated
b’s don’t match because the quantifier applies to the
[ab]
group. Only two of the Str
s have repeated
ab’s:
Aa Missed! Aba Matched! Abba Missed! Abbba ...
Get Learning Perl 6 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.