我匹配的LaTeX-Commands的形式命令{…}{…}。第二个参数是可选的。我的RegEx只是perl6 faq中一个示例的稍微修改版本,因为我需要处理在参数中可能嵌套LaTeX命令的情况。
我想使用命名组。我该怎么做呢?我试图将(?
my $regex = qr/
\command
({
(?:
[^{}]++
|
(?1)
)*
})
({
(?:
[^{}]++
|
(?2)
)*
})?
/x;
$s =~ m/$regex/g
您应该能够使用命名组,如s/(?<first>foo+)/k<first>bar/
或s/(?first:foo+)/g{first}bar/
,但(?<first>:...)
将:
视为模式的一部分。
我不确定为什么你的(?PARNO)
表达式引起无限递归,但手册有一个额外的父组时做完全相同的事情。