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 Strs match. The ones with repeated b’s don’t match because the quantifier applies to the [ab] group. Only two of the Strs 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.