正则表达式 \k<name+0> 中的“+0”是什么意思?
What does the "+0" mean in the regexp \k<name+0>?
我是 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
。我还没有找到任何文档或示例,任何人都可以指出正确的方向吗?
\k<l+0>
与 (?<l>\w)
协同工作
(?<l>\w)
的匹配存储在名为 'l'
的捕获组中
\k<l+0>
匹配命名捕获组 'l'
匹配的相同文本,当时它处于与此反向引用现在
相同的递归级别
我是 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
。我还没有找到任何文档或示例,任何人都可以指出正确的方向吗?
\k<l+0>
与 (?<l>\w)
(?<l>\w)
的匹配存储在名为 'l'
\k<l+0>
匹配命名捕获组 'l'
匹配的相同文本,当时它处于与此反向引用现在