Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich alle überlappenden Übereinstimmungen mit Python Regex?
Überlappende Übereinstimmungen mithilfe von Regex in Python finden
Bei Suchvorgängen ist es häufig erforderlich, mehrere Vorkommen eines bestimmten Musters innerhalb eines zu identifizieren und abzurufen größerer Text. Wenn sich die Übereinstimmungen überschneiden, können bei standardmäßigen Regex-Abgleichstechniken einige Instanzen übersehen werden. In dieser Frage wird untersucht, wie man mithilfe der regulären Ausdrücke von Python alle überlappenden Übereinstimmungen findet.
Das Ziel besteht darin, jeden 10-stelligen Zahlensatz innerhalb einer bestimmten Zahlenfolge zu extrahieren. Beispielsweise möchten wir in der Zeichenfolge „123456789123456789“ Folgendes erhalten:
[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]
Erfassungsgruppen und Lookaheads
Um dies zu erreichen, setzen wir eine Erfassungsgruppe ein ein Ausblick. Der Lookahead identifiziert den gewünschten Text (hier die 10-stelligen Zahlen), aber die tatsächliche Übereinstimmung ist die Teilzeichenfolge mit der Breite Null vor dem Lookahead. Dies führt zu nicht überlappenden Übereinstimmungen.
Implementierung
Mit der Finditer-Methode können wir die Übereinstimmungen wie folgt erhalten:
import re s = "123456789123456789" matches = re.finditer(r'(?=(\d{10}))', s) results = [int(match.group(1)) for match in matches]
Die Ausgabeergebnisse geben die gewünschte Liste überlappender Übereinstimmungen zurück:
[1234567891, 2345678912, 3456789123, 4567891234, 5678912345, 6789123456, 7891234567, 8912345678, 9123456789]
Dieser Ansatz extrahiert effizient alle überlappenden Vorkommen des angegebenen Musters und stellt eine wertvolle Technik für die umfassende Textverarbeitung dar.
Das obige ist der detaillierte Inhalt vonWie finde ich alle überlappenden Übereinstimmungen mit Python Regex?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!