Alle Vorkommen eines Teilstrings in Python finden
In Python können Sie string.find() und string.rfind() verwenden Methoden zum Abrufen des Index eines Teilstrings innerhalb eines größeren Strings. Es gibt jedoch keine integrierte Funktion, die speziell dafür entwickelt wurde, alle Vorkommen einer Teilzeichenfolge zurückzugeben.
Verwendung regulärer Ausdrücke
Ein leistungsfähigerer Ansatz zum Auffinden mehrerer Teilzeichenfolgen Vorkommen besteht darin, reguläre Ausdrücke zu verwenden:
import re # Sample string string = "test test test test" # Find all occurrences of "test" matches = [m.start() for m in re.finditer('test', string)] print(matches) # Output: [0, 5, 10, 15]
re.finditer generiert einen Generator, der einzelne Übereinstimmungsobjekte liefert. Jedes Übereinstimmungsobjekt stellt den Startindex einer übereinstimmenden Teilzeichenfolge bereit.
Berücksichtigung überlappender Übereinstimmungen
Standardmäßig sucht re.finditer nach nicht überlappenden Übereinstimmungen. Um überlappende Übereinstimmungen zu finden, verwenden Sie einen positiven Lookahead:
matches = [m.start() for m in re.finditer('(?=tt)', 'ttt')] print(matches) # Output: [0, 1]
Der Ausdruck (?=tt) bestätigt, dass die Teilzeichenfolge „tt“ an der aktuellen Position erscheint, sie aber nicht verbraucht.
Umgekehrte Allessuche ohne Überlappungen
Um eine umgekehrte Allessuche ohne überlappende Übereinstimmungen durchzuführen, kombinieren Sie Positiv und Negativ Lookahead:
search = 'tt' matches = [m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')] print(matches) # Output: [1]
Dieser Ausdruck stellt sicher, dass „tt“ unmittelbar nach dem Cursor erscheint, jedoch nicht innerhalb eines bestimmten Lookback-Bereichs (len(search)-1) in umgekehrter Richtung.
Das obige ist der detaillierte Inhalt vonWie kann ich alle Vorkommen eines Teilstrings in Python finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!