【发布时间】:2019-03-01 08:44:19
【问题描述】:
我一直在尝试弄清楚如何在 Perl 6 中执行递归正则表达式。举个玩具例子,平衡括号匹配器,它将匹配 (((((())()) 内的 ((())())。
我以为这样就可以了:
my regex paren {
'(' ~ ')' <paren>*
}
或者更简单的
my regex paren {
'(' <paren>* ')'
}
但是失败了
No such method 'paren' for invocant of type 'Match'
in regex paren at ...
【问题讨论】:
-
@HåkonHægland:谢谢,尤其是link 是一个不错的发现。但是,我明确尝试不查看语法,因为我想找到所有匹配的跨度,而不是从头开始解析字符串,而且我认为语法不支持这一点。也就是说,我是 P6 的菜鸟,所以我确信我错过了一些东西。
-
@HåkonHægland 我的意思是我想我可以制作一个包含
nonparen作为我不想要的东西的语法,以及一个将收集paren匹配项的操作类......但这得到了复杂的快...很难相信 P6 正则表达式放弃了对 Perl 基本开创的东西的支持。