Wie können Sie mit regulären Python-Ausdrücken ein True
/ False
zurückgeben? Alle Python-Rückgaben sind:
<_sre.SRE_Match object at ...>
Match
Objekte sind immer wahr und None
werden zurückgegeben, wenn keine Übereinstimmung vorliegt. Testen Sie einfach die Richtigkeit.
if re.match(...):
if re.match(...) is None:
stattdessen zu verwendenre
so gestaltet ist? Wennmatch
Objekte immer wahr sind, warum kehrt sie dann nicht gleich zurückTrue
, da wir immer wissen müssen, ob die Antwort überhaupt wahr oder falsch ist?Wenn Sie wirklich brauchen
True
oderFalse
, verwenden Sie einfachbool
Wie andere Antworten bereits gezeigt haben , können Sie es direkt verwenden, ohne es einzuschließen , wenn Sie es nur als Bedingung für ein
if
oderwhile
verwendenbool()
quelle
bool
Wert wird benötigt, wenn die bedingte Anweisung eine boolesche arithmetische Operation enthält. Beispiel: if (re.search ("a", "abc") & True):&
ist eine bitweise Operation.and
wäre die boolesche Operation.(re.search("a","abc") and True)
bool
macht dem Leser die Absicht des Programmierers klar.Ignacio Vazquez-Abrams ist richtig. Aber um näher darauf einzugehen,
re.match()
wird entweder zurückgegebenNone
, was ausgewertet wirdFalse
, oder ein Übereinstimmungsobjekt, das immer so sein wird,True
wie er es gesagt hat. Nur wenn Sie Informationen zu den Teilen wünschen, die Ihrem regulären Ausdruck entsprechen, müssen Sie den Inhalt des Übereinstimmungsobjekts überprüfen.quelle
Eine Möglichkeit, dies zu tun, besteht darin, nur den Rückgabewert zu testen. Weil Sie es bekommen
<_sre.SRE_Match object at ...>
, bedeutet dies, dass dies als wahr bewertet wird. Wenn der reguläre Ausdruck nicht übereinstimmt, erhalten Sie den Rückgabewert None, der als false ausgewertet wird.Produziert
hi
als Ausgabe.quelle
None
ist die Standardeinstellung, wenn nichts explizit zurückgegeben wird.Hier ist meine Methode:
quelle
match
zusearch
, wird es wahr zurückgebenSie können
re.match()
oder verwendenre.search()
. Python bietet zwei verschiedene primitive Operationen, die auf regulären Ausdrücken basieren:re.match()
Überprüft nur am Anfang der Zeichenfolge,re.search()
ob eine Übereinstimmung vorliegt , während an einer beliebigen Stelle in der Zeichenfolge nach einer Übereinstimmung gesucht wird (dies ist standardmäßig bei Perl der Fall). verweisen Sie diesquelle