我是Ruby中的正则表达式的新手,而且似乎找不到关于\k<name+0>含义的任何可靠文档。这是我没有得到的+0部分。

这是一个示例-此正则表达式与回文匹配:

\A(?<p>(?:(?<l>\w)\g<p>\k<l+0>|\w))\z

当我删除+0中的\k<l+0>时,它不再正确匹配。
我的测试:
>> /\A(?<p>(?:(?<l>\w)\g<p>\k<l+0>|\w))\z/.match "aabbcdcbbaa"
#=> #<MatchData "aabbcdcbbaa" p:"aabbcdcbbaa" l:"c">

>> /\A(?<p>(?:(?<l>\w)\g<p>\k<l>|\w))\z/.match "aabbcdcbbaa"
#=> nil

我要做的就是删除+0。我还没有找到任何文档或示例,有人可以向我指出正确的方向吗?

最佳答案

\k<l+0>(?<l>\w)一起使用
(?<l>\w)的匹配项存储在名为'l'的捕获组中
\k<l+0>匹配与该反向引用现在处于相同递归级别时与命名捕获组'l'匹配的相同文本

09-13 12:24