<p>用正则表达式解析HTML是个坏主意!</p>
<p>想想下面这段html</p>
<pre><code><a></a > <!-- legal html, but won't pass your regex -->
<a href="/sitemap">Sitemap<!-- proof that a>b iff ab>1 --></a>
</code></pre>
<p>这样的例子还有很多。正则表达式对很多事情都有好处,但对解析HTML却没有好处。</p>
<p>您应该考虑使用<a href="http://www.crummy.com/software/BeautifulSoup/" rel="noreferrer">Beautiful Soup</a>python HTML解析器。</p>
<p>无论如何,使用regex的特别解决方案是</p>
<pre><code>import re
data = """
<div id=hotlinklist>
<a href="foo1.com">Foo1</a>
<div id=hotlink>
<a href="/">Home</a>
</div>
<div id=hotlink>
<a href="/extract">Extract</a>
</div>
<div id=hotlink>
<a href="/sitemap">Sitemap</a>
</div>
</div>
"""
e = re.compile('<a *[^>]*>.*</a *>')
print e.findall(data)
</code></pre>
<p>输出:</p>
<pre><code>>>> e.findall(data)
['<a href="foo1.com">Foo1</a>', '<a href="/">Home</a>', '<a href="/extract">Extract</a>', '<a href="/sitemap">Sitemap</a>']
</code></pre>