2016-09-10 55 views
10

我是Ruby中正则表达式的新手,我似乎无法找到有关\k<name+0>含义的任何可靠文档。这是我没有收到的+0部分。正则表达式中的“+0”是什么意思?k <name+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。我还没有找到任何文件或例子,任何人都可以指出我的方向?

+0

伟大的问题。它向我介绍了'\ g <...>'的奇妙世界。 –

回答

11

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

一起工作的(?<l>\w)比赛被存储在一个名为'l'

\k<l+0>匹配相同的文本捕获组被命名捕获组'l'当它是在匹配中与此反向引用相同的递归级别现在是

+1

太棒了!另外,它是'+ 0'。有没有其他的功能,如'+ 1'或其他? –

+0

@Cᴀʟʟᴏᴅᴀᴄɪᴛʏ+0是相同的递归级别,+1是更深一级,-1是一级较深 – Andie2302

+1

我不怀疑你说什么,但我想找到一个'+ 0'的参考,最好在Ruby文档中,但是在Oniguruma文档中,否则。 –

相关问题