正则表达式 \k<name+0> 中的“+0”是什么意思?

What does the "+0" mean in the regexp \k<name+0>?

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

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

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

当我删除 \k<l+0> 中的 +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' 匹配的相同文本,当时它处于与此反向引用现在

相同的递归级别