Używając wyrażeń regularnych Pythona, jak uzyskać zwrot True
/ False
zwracany? Wszystkie zwroty w Pythonie to:
<_sre.SRE_Match object at ...>
Match
obiekty są zawsze prawdziwe i None
są zwracane, jeśli nie ma dopasowania. Po prostu sprawdź poprawność.
if re.match(...):
if re.match(...) is None:
Zamiast tego może być bardziej pożądanere
jest tak zaprojektowany? Jeślimatch
przedmioty są zawsze prawdziwe, dlaczego po prostu nie wracaTrue
na pierwszym miejscu, skoro i tak zawsze musimy wiedzieć, czy odpowiedź jest prawdziwa, czy fałszywa?Jeśli naprawdę potrzebujesz
True
lubFalse
, po prostu użyjbool
Jak wskazywały inne odpowiedzi, jeśli używasz go tylko jako warunku dla
if
lubwhile
, możesz użyć go bezpośrednio, bez zawijaniabool()
źródło
bool
wartość jest potrzebna, gdy instrukcja warunkowa zawiera logiczną operację arytmetyczną. np .: if (re.search ("a", "abc") & True):&
jest operacją bitową .and
byłaby operacją boolowską .(re.search("a","abc") and True)
bool
sprawia, że intencja programisty jest jasna dla czytelnika.Ignacio Vazquez-Abrams ma rację. Ale aby rozwinąć,
re.match()
zwróci alboNone
, który ocenia doFalse
, albo dopasowany obiekt, który zawsze będzie taki,True
jak powiedział. Tylko jeśli chcesz uzyskać informacje o częściach, które pasują do twojego wyrażenia regularnego, musisz sprawdzić zawartość obiektu dopasowania.źródło
Jednym ze sposobów jest po prostu przetestowanie zwracanej wartości. Ponieważ otrzymujesz
<_sre.SRE_Match object at ...>
to, oznacza to, że zostanie to ocenione jako prawda. Jeśli wyrażenie regularne nie zostanie dopasowane, zwrócona zostanie wartość None, której wynikiem jest false.Produkuje
hi
jako wyjście.źródło
None
jest wartością domyślną, jeśli nic nie jest jawnie zwracane.Oto moja metoda:
źródło
match
nasearch
, zwróci TrueMożesz użyć
re.match()
lubre.search()
. Python oferuje dwie różne operacje prymitywne oparte na wyrażeniach regularnych:re.match()
sprawdza dopasowanie tylko na początku ciągu, podczas gdyre.search()
sprawdza dopasowanie w dowolnym miejscu w ciągu (tak robi domyślnie Perl). odnieś toźródło