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