レベル付き後方参照
手元では、7/12日のコメントの例が動いた。
stag -> nameの二段呼び出しと、etag呼び出しの一段階の差なので、\k
r = Regexp.compile(<<’__REGEXP__’.strip, Regexp::EXTENDED) (?<element> ¥g<stag> ¥g<content>* ¥g<etag> ){0} (?<stag> < ¥g<name> ¥s* > ){0} (?<name> [a-zA-Z_:]+ ){0} (?<content> [^<&]+ (¥g<element> | [^<&]+)* ){0} (?<etag> </ ¥k<name+1> >){0} ¥g<element> __REGEXP__ r.match(’<foo>f<foo>fff</foo>f</foo>’).captures r.match(’<foo>f<bar>bbb</bar>f</foo>’).captures