Разбор HTML с регулярным выражением - плохая идея!
Подумайте о следующем фрагменте HTML
<a></a > <!-- legal html, but won't pass your regex -->
<a href="/sitemap">Sitemap<!-- proof that a>b iff ab>1 --></a>
Есть еще много таких примеров. Регулярные выражения хороши для многих вещей, но не для разбора HTML.
Вам следует рассмотреть возможность использования Beautiful Soup Python HTML-парсер.
Во всяком случае, специальное решение с использованием регулярных выражений
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)
Выход:
>>> e.findall(data)
['<a href="foo1.com">Foo1</a>', '<a href="/">Home</a>', '<a href="/extract">Extract</a>', '<a href="/sitemap">Sitemap</a>']