後方参照とネストレベル

ある人から、以下の例を示された。

/^(?<o>|.|(?:(?<i>.)\g<o>\k<i>))$/.match('rr')
/^(?<o>|.|(?:(?<i>.)\g<o>\k<i>))$/.match('rer')

はマッチするのに、以下はマッチしない。

/^(?<o>|.|(?:(?<i>.)\g<o>\k<i>))$/.match('reer')

これは、iにcaptureされるのは最初は'r'だが、再帰呼び出しされた後で二番目にcaptureされるのは'e'になり、再帰呼び出しから戻ってきた後でも、iで参照されるのは'e'のままになるためである。
これは仕様であって、このままで良いと思うが、上記の例でもマッチできるような新しい機能が必要かもしれない。
\kで参照している位置から相対的に、呼び出しのネストが何段階でのcapture結果を参照したいのかを指定できるようにするというのを考えてみた。
表記は

\k<name+n>
\k<name-n>

でどうだろうか?