Perl 6分别捕获重复的匹配组吗?

问题描述 投票:4回答:1

我相信Perl 6提供了分别捕获重复组的功能,而早期的风格则只能捕获最后一个组或整个匹配的组字符串。有人可以举一个很好的例子,说明如何使用Perl 6的强大功能吗?例如

我需要捕获此正则表达式的所有匹配组

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

我如何在Perl 6中做到这一点?

regex regex-group perl6 raku
1个回答
4
投票

[通常,如果您量化捕获,则只需获取所有匹配项的列表。示例:

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

也适用于位置捕获:

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

现在,您可以将其应用于您自己的正则表达式,它看起来像是人为混淆的。它以某种方式生成吗?

© www.soinside.com 2019 - 2024. All rights reserved.