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

时间:2012-05-09 18:50:41

标签: regex perl6 regex-group

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

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

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

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

1 个答案:

答案 0 :(得分:3)

通常,如果量化捕获,您只需获得所有匹配的列表。例如:

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

也适用于位置捕捉:

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

现在你可以将它应用到你自己的正则表达式中,这看起来是人为的错综复杂的。它是以某种方式产生的吗?