Python re.finditer()-Methode
re.finditer()ist eine PythonreModulfunktion zumiterativen Finden aller Übereinstimmungen.
Es gibt einen Iterator zurück, bei dem jedes Element ein Match-Objekt ist, sodass Sie die Übereinstimmungsergebnisse einzeln verarbeiten können.
Begriffsdefinition: find iterEs bedeutet "Find-Iterator".
Grundlegende Syntax und Parameter
Syntaxformat
re.finditer(pattern, string, flags=0)
Parameterbeschreibung
- pattern: Reguläres Ausdrucksmuster
- string: Die zu durchsuchende Zeichenkette
- flags: Optional, Flags für reguläre Ausdrücke
Funktionsbeschreibung
- Rückgabewert: Gibt einen Iterator zurück, wobei jedes Element ein Match-Objekt ist.
- Eigenschaften: Geeignet für die Verarbeitung großer Mengen von Übereinstimmungsergebnissen, wodurch Speicher gespart wird.
Beispiele
Beispiel 1: Grundlegende Verwendung
Beispiel
import re
text = "3 Äpfel, 5 Orangen, 8 Bananen"
# Iterieren, um alle Zahlen zu finden
for match in re.finditer(r'\d+', text):
print(f"Gefunden: {match.group()} Position: {match.start()}-{match.end()}")
text = "3 Äpfel, 5 Orangen, 8 Bananen"
# Iterieren, um alle Zahlen zu finden
for match in re.finditer(r'\d+', text):
print(f"Gefunden: {match.group()} Position: {match.start()}-{match.end()}")
Erwartete Ausgabe:
找到: 3 位置: 0-1 找到: 5 位置: 4-5 找到: 8 位置: 8-9
Beispiel 2: Verarbeitung einer E-Mail-Liste
Beispiel
import re
text = "Kontaktieren Sie [email protected] oder [email protected] für Hilfe"
# Finde und verarbeite jede E-Mail
for match in re.finditer(r'(\w+)@(\w+\.\w+)', text):
print(f"Vollständig: {match.group()}")
print(f" Benutzername: {match.group(1)}")
print(f" Domain: {match.group(2)}")
print(f" Position: {match.start()}-{match.end()}")
text = "Kontaktieren Sie [email protected] oder [email protected] für Hilfe"
# Finde und verarbeite jede E-Mail
for match in re.finditer(r'(\w+)@(\w+\.\w+)', text):
print(f"Vollständig: {match.group()}")
print(f" Benutzername: {match.group(1)}")
print(f" Domain: {match.group(2)}")
print(f" Position: {match.start()}-{match.end()}")
Erwartete Ausgabe:
完整: [email protected] 用户名: test 域名: example.com 位置: 2-16 完整: [email protected] 用户名: admin 域名: test.org 位置: 17-30
Beispiel 3: Vergleich mit re.findall()
Beispiel
import re
text = "a1b2c3d4"
# findall gibt eine Liste von Zeichenketten zurück
print("findall:", re.findall(r'\d', text))
# finditer gibt einen Iterator zurück
print("finditer:", [m.group() for m in re.finditer(r'\d', text)])
text = "a1b2c3d4"
# findall gibt eine Liste von Zeichenketten zurück
print("findall:", re.findall(r'\d', text))
# finditer gibt einen Iterator zurück
print("finditer:", [m.group() for m in re.finditer(r'\d', text)])
Erwartete Ausgabe:
findall: ['1', '2', '3', '4'] finditer: ['1', '2', '3', '4']
Andere Erweiterungen
Python-re-Modul