The construct (?R) is equivalent to (?0) (or \g<0>) - it lets you recurse the whole pattern:
(?R)
(?0)
\g<0>
<(?>[^<>]+|(?R))+>
This will match properly balanced angle brackets with any text in-between the brackets, like <a<b>c<d>e>.
<a<b>c<d>e>