我是Ruby中正则表达式的新手,我似乎无法找到\k<name+0>
意味着什么的可靠文档。它是{I}未获得的+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
。我还没有找到任何文件或这样的例子,有人能指出我正确的方向吗?
答案 0 :(得分:11)
\k<l+0>
与(?<l>\w)
(?<l>\w)
的匹配存储在名为'l'
\k<l+0>
匹配指定的捕获组'l'
匹配的相同文本,当它处于相同的递归级别时,此反向引用现在是