Überlappende Regex-Übereinstimmungen verstehen
Bei der Verwendung von re.findall() zum Abgleichen regulärer Ausdrücke ist es wichtig zu verstehen, wie mit überlappenden Übereinstimmungen umgegangen wird. Standardmäßig gibt re.findall() nicht überlappende Übereinstimmungen zurück.
Fallstudie: hallo und ww
Bedenken Sie das folgende Muster:
>>> match = re.findall(r'\w\w', 'hello') >>> print match ['he', 'll']
Wie erwartet stimmt dieses Muster mit Sequenzen aus zwei Zeichen überein. Es stimmt jedoch nicht mit „el“ oder „lo“ überein, da sie sich mit „he“ bzw. „ll“ überschneiden.
Überlappende Übereinstimmungen mit Lookahead-Behauptungen
Um überlappende Übereinstimmungen zu finden, kann eine Lookahead-Behauptung verwendet werden. Eine Lookahead-Behauptung, gekennzeichnet durch (?=...), überprüft, ob als nächstes ein angegebenes Muster existiert, ohne die Eingabezeichenfolge zu verbrauchen.
Mit diesem Konzept erfasst der folgende Ausdruck erfolgreich sowohl überlappende als auch nicht überlappende Übereinstimmungen:
>>> re.findall(r'(?=(\w\w))', 'hello') ['he', 'el', 'll', 'lo']
Das Muster lautet jetzt: „Suchen Sie eine beliebige Stelle, auf die ein zweistelliges Wort folgt.“ Dadurch wird sichergestellt, dass alle möglichen übereinstimmenden Sequenzen, sowohl überlappende als auch nicht überlappende, erfasst werden.
Das obige ist der detaillierte Inhalt vonWie geht „re.findall()' mit überlappenden Übereinstimmungen in regulären Ausdrücken um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!