【发布时间】:2016-09-10 09:13:53
【问题描述】:
我是 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<...>的奇妙世界。
标签: ruby regex backreference named-captures