Regex &引用;量词不量化任何事物”;但我从未要求过一个量词
请考虑以下Perl风格??(我想不会吧?) 以下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”时,我明白了它的意思,但我不明白为什么它在
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>$/;