In einem Programm, das ich schreibe, muss Python das verwenden re.search()
Funktion verwenden, um Übereinstimmungen in einem Textblock zu finden und die Ergebnisse auszudrucken. Das Programm wird jedoch beendet, sobald es die erste Übereinstimmung im Textblock gefunden hat.
Wie mache ich das wiederholt, wenn das Programm nicht stoppt, bis ALLE Übereinstimmungen gefunden wurden? Gibt es dafür eine separate Funktion?
Antworten:
Verwenden Sie
re.findall
oderre.finditer
stattdessen.re.findall(pattern, string)
Gibt eine Liste übereinstimmender Zeichenfolgen zurück.re.finditer(pattern, string)
Gibt einen Iterator überMatchObject
Objekte zurück.Beispiel:
quelle
finditer
war das, wonach ich gesucht habe. Ich bin überrascht, dass einer Match-Objekte und die anderen Strings zurückgibt. Ich hatte erwartet, einematch_all
odermatch_iter
Funktion zu verwenden.re.search
In einer Schleife verwenden. Es wird einMatch
Objekt zurückgeben. Sie möchtenMatch.start() + 1
alspos
Argumentre.search
für die nächste Iteration der Schleife übergeben.findall
wird eine Liste übereinstimmender Tupel zurückgegeben, keine Liste übereinstimmender Zeichenfolgen.