4

我相信 Perl 6 提供了单独捕获重复组的能力,而不是早期版本,您只能捕获最后一个组或整个匹配的组字符串。有人可以举一个很好的例子如何使用 Perl 6 的这个很棒的特性吗?例如

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

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

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

4

1 回答 1

4

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

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

也适用于位置捕获:

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

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

于 2012-05-10T05:50:17.563 回答