Heim >Backend-Entwicklung >Python-Tutorial >Warum gibt „re.findall' eine leere Liste zurück, während „re.search' in Python 3.4.3 mit demselben Muster und derselben Zeichenfolge korrekt funktioniert?
re.findall verhält sich anomal
Dilemma:
In einem Python-Skript mit Python 3.4 .3, die Methode re.search liefert das erwartete Ergebnis, wenn sie auf a angewendet wird bestimmte Quellzeichenfolge mithilfe eines angegebenen Musters. re.findall gibt jedoch aus unerklärlichen Gründen eine leere Liste für dasselbe Muster und dieselbe Quellzeichenfolge zurück.
Erkundung:
Seltsamerweise ist das Die Methode re.findall verhält sich unerwartet, obwohl sie scheinbar die Anforderungen zum Extrahieren von Übereinstimmungen aus einer Zeichenfolge basierend auf a erfüllt Muster.
Lösung:
Bei sorgfältiger Untersuchung wird deutlich, dass zwei Faktoren zu diesem eigenartigen Verhalten beitragen:
Korrigiertes Muster:
Um dieses Problem zu beheben und Übereinstimmungen erfolgreich zu extrahieren, wurde das Das folgende korrigierte Muster sollte sein beschäftigt:
-?\d*\.?\d+
Erläuterung:
Demonstration:
Unter Verwendung des modifizierten Musters wird das Die Methode re.findall ruft jetzt genau die erwartete Liste von ab Übereinstimmungen:
['123', '3.1415926']
Das obige ist der detaillierte Inhalt vonWarum gibt „re.findall' eine leere Liste zurück, während „re.search' in Python 3.4.3 mit demselben Muster und derselben Zeichenfolge korrekt funktioniert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!