python如何进行多重<ul></ul>标签的匹配?

string='''
TTT
<ul>
    <li> \item A
    A </li>
    <li> \item B </li>

    <ul>
        <li> \item C  <code>s.s</code> </li>
    </ul>     

    <ul>
        <li> \item D </li>
    </ul>   

    <li> \item E </li>
</ul>

<p>ERROR</p>
FALSE

<ul>
    <li> \item F </li>
</ul>'''

怎么样能够把里面的列表项标签全部匹配出来?
就好比“(a+b)+((a+(b+c))+d)”怎么把括号里的内容拿出来,
第一层括号里有'a+b'和'(a+(b+c))+d',
第二层有'a+(b+c)',不是用栈,用正则表达式匹配