我是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'
匹配的相同文本