Думаю, этого должно хватить:
#!python
import re
pattern = re.compile(r'<title>([^<]*)</title>', re.MULTILINE|re.IGNORECASE)
pattern.search(text)
... предполагая, что ваш текст (HTML) находится в переменной с именем "text".
Это также предполагает, что нет других тегов HTML, которые могут быть легально встроены в тег HTML TITLE, и нет способа легально встроить любой другой символ <в такой контейнер / блок.
Однако ...
Не используйте регулярные выражения для синтаксического анализа HTML в Python. Используйте парсер HTML! (Если вы не собираетесь писать полноценный синтаксический анализатор, что потребует дополнительной работы, когда различные синтаксические анализаторы HTML, SGML и XML уже находятся в стандартных библиотеках.
Если вы обрабатываете «реальный» тег HTML (который часто не соответствует никаким валидаторам SGML / XML), используйте пакет BeautifulSoup . Его нет в стандартных библиотеках (пока), но для этой цели рекомендуется.
Другой вариант: lxml ..., который написан для правильно структурированного (соответствующего стандартам) HTML. Но у него есть возможность вернуться к использованию BeautifulSoup в качестве парсера: ElementSoup .