webentwicklung-frage-antwort-db.com.de

Reguläre Ausdrücke von Python geben true/false zurück

Mit regulären Ausdrücken von Python Wie kann ein True/False zurückgegeben werden? Alle Python-Ergebnisse sind:

<_sre.SRE_Match object at ...>
78
nobody

Match-Objekte sind immer wahr und None wird zurückgegeben, wenn keine Übereinstimmung besteht. Testen Sie einfach die Richtigkeit.

if re.match(...):

Wenn Sie wirklich True oder False benötigen, verwenden Sie einfach bool

>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False

Wie andere Antworten gezeigt haben, können Sie sie, wenn Sie sie nur als Bedingung für eine if oder while verwenden, direkt verwenden, ohne sie in bool() einzuhüllen

100
John La Rooy

Ignacio Vazquez-Abrams hat Recht. Um dies zu erläutern, gibt re.match() entweder None zurück, das zu False ausgewertet wird, oder ein Übereinstimmungsobjekt, das immer True ist, wie er gesagt hat. Nur wenn Sie Informationen zu den Teilen wünschen, die Ihrem regulären Ausdruck entsprechen, müssen Sie den Inhalt des Übereinstimmungsobjekts auschecken.

7
cory

Eine Möglichkeit, dies zu tun, besteht darin, nur den Rückgabewert zu testen. Da Sie <_sre.SRE_Match object at ...> erhalten, wird dies als wahr ausgewertet. Wenn der reguläre Ausdruck nicht übereinstimmt, erhalten Sie den Rückgabewert None, der den Wert false ergibt.

import re

if re.search("c", "abcdef"):
    print "hi"

Erzeugt hi als Ausgabe.

5
Gavin Anderegg

Hier ist meine Methode:

import re
p = re.complie(r'hi')
print bool(p.match("abcdefghijkl"))
0
Vaibhav Desai