Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich alle überlappenden Übereinstimmungen mit Python Regex?

Wie finde ich alle überlappenden Übereinstimmungen mit Python Regex?

Susan Sarandon
Susan SarandonOriginal
2024-12-16 03:57:15499Durchsuche

How to Find All Overlapping Matches Using 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn