我对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
。我还没有找到任何关于此的文档或示例,有人能指点我一下吗?
\g<...>
这个美妙的世界。 - Cary Swoveland