Perl 6 capturing repeating matching groups separat

2019-06-25 04:20发布

I believe Perl 6 offers the capability of capturing repeating groups separately as opposed to earlier flavors where you could only capture the last group or the whole matched group string. Can someone please give a good example how to use this awesome feature of Perl 6? For e.g.

I need to capture all the matching groups for this regex

((?:(?:(?:(?:")(?:[^"]*?)")|(?:(?<!")(?:[^"]*?)(?!")))(?<!\\)\|)*) 

How do I do that in Perl 6?

1条回答
老娘就宠你
2楼-- · 2019-06-25 04:36

In general, if you quantify a capture, you simply get a list of all matches. Example:

$ perl6 -e '"abc" ~~ /<alpha>+/ and say $<alpha>.join(", ")'
a, b, c

works with positional captures too:

$ perl6 -e '"abc" ~~ /(\w)+/ and say $0.join(", ")'
a, b, c

Now you can just apply that to your own regex, which looks artificially convoluted. Is it generated in some way?

查看更多
登录 后发表回答