Überlappende Regex-Übereinstimmungen: Jede Zahlenreihe finden
Einführung
Es stellt sich die Frage wie man jede überlappende 10-stellige Zahlenreihe innerhalb einer größeren Zahlensammlung mithilfe des Moduls „re“ in Python findet 2.6. Während nicht überlappende Übereinstimmungen unkompliziert sind, erweist sich das Extrahieren aller Vorkommen als schwierig.
Lösung
Um dieses Problem zu lösen, kann eine Erfassungsgruppe innerhalb eines Lookaheads eingesetzt werden. Der Lookahead identifiziert die gewünschten Sequenzen, aber die tatsächliche Übereinstimmung entspricht dem vorangehenden Teilstring mit der Breite Null, wodurch sichergestellt wird, dass es nicht zu Überlappungen kommt Übereinstimmungen.
Implementierung
import re s = "123456789123456789" matches = re.finditer(r'(?=(\d{10}))', s) results = [int(match.group(1)) for match in matches]
Ausgabe
[1234567891, 2345678912, 3456789123, 4567891234, 5678912345, 6789123456, 7891234567, 8912345678, 9123456789]
Erklärung
Der reguläre Ausdruck (?=(d{10})) behauptet, dass sich unmittelbar rechts davon ein befindet Erfassungsgruppe, die eine 10-stellige Zahlenreihe (d{10}) darstellt. Der Lookahead verbraucht keine Zeichen, daher sind die tatsächlichen Übereinstimmungen die Teilzeichenfolgen mit der Länge Null vor den Lookaheads, bei denen es sich um die einzelnen 10-stelligen Reihen handelt.
Das obige ist der detaillierte Inhalt vonWie kann ich mit dem Python-Modul „re' alle überlappenden 10-stelligen Zahlenreihen in einer Zeichenfolge finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!