“量词没有量化”,但我从未要求量词

时间:2016-01-26 21:38:21

标签: regex perl perl6 quantifiers

考虑以下Perl风味? (我想不是吗?)regex to test if a string is a palindrome

^((.)(?1)\2|.?)$

try it here

以下

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

say "$word is a palindrome"
    if $word ~~ /<palindrome>/
    && $word.chars > 1;

给出错误

===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⏏|.?)$

我对(Python)正则表达式有一定的了解,当我说“Quantifier无量化”时,我明白了它的含义,但是当我提出要求时,我没有得到为什么对于递归,而不是量化。

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

做了尝试搞乱语法和搜索,但就我和互联网而言,这个正则表达式工作,并摆弄它产生各种其他错误,我没有得到

我做错了什么?

1 个答案:

答案 0 :(得分:6)

这样做的一种方法是:

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