Regex &引用;量词不量化任何事物”;但我从未要求过一个量词

Regex &引用;量词不量化任何事物”;但我从未要求过一个量词,regex,perl,raku,quantifiers,Regex,Perl,Raku,Quantifiers,请考虑以下Perl风格??(我想不会吧?) 以下 my regex palindrome { ^((.)(?1)\2|.?)$ } say "$word is a palindrome" if $word ~~ /<palindrome>/ && $word.chars > 1; 我对(Python)正则表达式有一定的了解,当它说“Quantifier quantifies nothing”时,我明白了它的意思,但我不明白为什么它在

请考虑以下Perl风格??(我想不会吧?)

以下

my regex palindrome {
    ^((.)(?1)\2|.?)$
}

say "$word is a palindrome"
    if $word ~~ /<palindrome>/
    && $word.chars > 1;
我对(Python)正则表达式有一定的了解,当它说“Quantifier quantifies nothing”时,我明白了它的意思,但我不明白为什么它在我要求递归而不是量化时会这么说

我没有足够的Perl知识来了解它为什么不喜欢反斜杠(另一个错误)

我确实尝试过搞乱语法并四处搜索,但就我和互联网而言,这个正则表达式是有效的,摆弄它会产生各种其他我不知道的错误


我做错了什么?

一种方法是:

my regex palindrome { (.) <~~> $0 || .? }
say "aba" ~~ /^<palindrome>$/;
my regex回文{(.)$0 | |.?}
说“aba”~~/^$/;

目前,关于是否可以将
perl
标记添加到perl 6问题中,存在一些问题,但请始终包括
perl6
标记。否则,您将使所有Perl 5开发人员感到困惑,他们会想知道为什么您的代码看起来如此有趣。
(?1)
在Perl 6中不是有效的构造。Perl 6正则表达式甚至不是远程PCRE。
(?1)
是Perl 5正则表达式中的一个,而不是一个命名的捕获组。我不确定如何将其转换为Perl6Regex(或者是否可以用regex实现),但下面是一些示例。请注意,绝大多数关于Perl的问题都是关于Perl 5的,尝试用Perl 6运行Perl 5代码可能在大多数情况下都不起作用。根据,递归地匹配整个正则表达式是
,或者可以指定编号(
)或命名(
)子模式。@WiktorStribiżew:捕获组索引是基于0的,并且未实现捕获组的断言。
~
这将每个单词都视为回文。@cat:不适合我;你的Rakudo版本是什么?
这是Rakudo版本2015.12-219-gd67cb03,建立在MoarVM版本2015.12-29-g8079ca5上,实现了Perl 6.c。
完全公开:我在
/usr/share/dict/words
上运行它,并将其输出传输到一个文件,然后
diff
ed文件,没有差异;说“ab”~~/^$/'#零哦!我在正则表达式的应用程序中错过了
^
$
。我错了,你是对的。
===SORRY!===
Quantifier quantifies nothing
at /home/cat/projects/perl6/code/misc/words.pl6:6
------>   ^((.)(?⏏1)\2|.?)$
Unrecognized backslash sequence (did you mean $1?)
at /home/cat/projects/perl6/code/misc/words.pl6:6
------>   ^((.)(?1)\2⏏|.?)$
my regex palindrome { (.) <~~> $0 || .? }
say "aba" ~~ /^<palindrome>$/;