Kürzeste Übereinstimmungen zwischen zwei Zeichenfolgen extrahieren
Beim Umgang mit großen Protokolldateien kann das Extrahieren spezifischer Daten zwischen zwei Zeichenfolgen eine Herausforderung sein. Die Aufgabe wird komplizierter, wenn die Start- und Endzeichenfolgen in der Datei mehrmals vorkommen und die gewünschte Ausgabe kürzeste Übereinstimmungen beinhaltet.
Regex-Lösung
Um dieses Problem zu lösen kann ein regulärer Ausdrucksansatz verwendet werden. Der ideale reguläre Ausdruck würde den Text zwischen den Start- und Endzeichenfolgen erfassen und die kürzesten Übereinstimmungen priorisieren.
Der bereitgestellte reguläre Ausdruck (start((?!start).)*?end) erfüllt diese Kriterien:
Implementierung mit Python
In Python bietet das re-Modul die notwendige Funktionen, um diesen regulären Ausdruck anzuwenden. Der folgende Code zeigt, wie man mit re.findall die kürzesten Übereinstimmungen extrahiert:
<code class="python">import re text = "start spam\nstart rubbish\nstart wait for it...\n profit!\nhere end\nstart garbage\nstart second match\nwin. end" matches = re.findall('(start((?!start).)*?end)', text, re.S) for match in matches: print(match)</code>
Ausgabe:
start wait for it... profit! here end start second match win. end
Zusätzliche Überlegungen für große Dateien
Bei außergewöhnlich großen Dateien (z. B. 2 GB) ist Effizienz entscheidend. Die folgende Optimierung kann angewendet werden:
Das obige ist der detaillierte Inhalt vonWie extrahiere ich mit Regex die kürzesten Übereinstimmungen zwischen zwei Zeichenfolgen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!