<([^>]+)>((?R)|.+)<\/\1>
<b></b>
после чего в содержимом будет вновь выполнен поиск, и если ничего не будет найдено - поместит содержимое в отдельную группу. <ul><li>1<span>qwe</span></li><div>sometext</div></ul><div></div>.
не могу понять почему не работает.