什么是&#34; + 0&#34;在regexp \ k <name + 0>中意味着什么?

时间:2016-09-10 09:13:54

标签: ruby regex backreference named-captures

我是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。我还没有找到任何文件或这样的例子,有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:11)

\k<l+0>(?<l>\w)

一起使用

(?<l>\w)的匹配存储在名为'l'

的捕获组中

\k<l+0>匹配指定的捕获组'l'匹配的相同文本,当它处于相同的递归级别时,此反向引用现在是