Ich denke, das sollte ausreichen:
#!python
import re
pattern = re.compile(r'<title>([^<]*)</title>', re.MULTILINE|re.IGNORECASE)
pattern.search(text)
... unter der Annahme, dass sich Ihr Text (HTML) in einer Variablen namens "text" befindet.
Dies setzt auch voraus, dass es keine anderen HTML-Tags gibt, die rechtmäßig in einen HTML-TITLE-Tag eingebettet werden können, und dass es keine Möglichkeit gibt, ein anderes <-Zeichen rechtmäßig in einen solchen Container/Block einzubetten.
Allerdings ...
Verwenden Sie keine regulären Ausdrücke für HTML-Parsing in Python. Verwenden Sie einen HTML-Parser! (Es sei denn, Sie wollen einen vollständigen Parser schreiben, was eine zusätzliche und überflüssige Arbeit wäre, wenn verschiedene HTML-, SGML- und XML-Parser bereits in den Standardbibliotheken enthalten sind).
Wenn Sie mit der "realen Welt" zu tun haben Tagessuppe HTML (das häufig nicht mit jedem SGML/XML-Validator konform ist), dann verwenden Sie die BeautifulSoup Paket. Es ist (noch) nicht in den Standardbibliotheken enthalten, wird aber allgemein für diesen Zweck empfohlen.
Eine andere Möglichkeit ist: lxml ... die für korrekt strukturiertes (standardkonformes) HTML geschrieben ist. Aber es hat eine Option, um auf BeautifulSoup als Parser zurückzugreifen: ElementSuppe .
10 Stimmen
Wow, ich kann nicht glauben, dass all die Antworten dazu auffordern, die gesamte HTML-Seite zu analysieren, nur um einen einfachen Titel zu extrahieren. Was für ein Overkill!
5 Stimmen
Der Titel der Frage sagt alles - das angegebene Beispiel geschieht HTML zu sein, aber das allgemeine Problem ist ... allgemein.