Menggunakan ekspresi reguler Python bagaimana Anda bisa mendapatkan True
/ False
dikembalikan? Semua pengembalian Python adalah:
<_sre.SRE_Match object at ...>
Match
objek selalu benar, dan None
dikembalikan jika tidak ada kecocokan. Uji saja kebenarannya.
if re.match(...):
if re.match(...) is None:
sebagai gantinyare
didesain seperti ini? Jikamatch
objek selalu benar, mengapa tidak kembaliTrue
di tempat pertama, mengingat kita selalu perlu tahu apakah jawabannya benar atau salah?Jika Anda benar-benar membutuhkan
True
atauFalse
, gunakan sajabool
Seperti jawaban lain telah menunjukkan, jika Anda hanya menggunakannya sebagai syarat untuk
if
atauwhile
, Anda dapat menggunakannya secara langsung tanpa membungkusnya.bool()
sumber
bool
nilai diperlukan ketika pernyataan bersyarat berisi operasi aritmatika boolean. mis .: if (re.search ("a", "abc") & True):&
adalah operasi bitwise .and
akan menjadi operasi boolean .(re.search("a","abc") and True)
bool
membuat maksud programmer jelas bagi pembaca.Ignacio Vazquez-Abrams benar. Tapi untuk menguraikan,
re.match()
akan mengembalikanNone
, yang mengevaluasiFalse
, atau objek yang cocok, yang akan selaluTrue
seperti yang dia katakan. Hanya jika Anda menginginkan informasi tentang bagian yang cocok dengan ekspresi reguler Anda, Anda perlu memeriksa konten objek pencocokan.sumber
Salah satu cara untuk melakukannya adalah hanya dengan menguji terhadap nilai kembali. Karena Anda mendapatkannya
<_sre.SRE_Match object at ...>
berarti ini akan bernilai true. Jika ekspresi reguler tidak cocok, Anda akan mengembalikan nilai Tidak ada, yang bernilai salah.Menghasilkan
hi
sebagai keluaran.sumber
None
adalah default jika tidak ada yang dikembalikan secara eksplisit.Inilah metode saya:
sumber
match
kesearch
, itu akan kembali BenarAnda dapat menggunakan
re.match()
ataure.search()
. Python menawarkan dua operasi primitif yang berbeda berdasarkan ekspresi reguler:re.match()
memeriksa kecocokan hanya di awal string, sementarare.search()
memeriksa kecocokan di mana saja dalam string (ini yang dilakukan Perl secara default). lihat inisumber