Menggunakan ekspresi reguler Python bagaimana Anda bisa mendapatkan True/ Falsedikembalikan? Semua pengembalian Python adalah:
<_sre.SRE_Match object at ...>
Menggunakan ekspresi reguler Python bagaimana Anda bisa mendapatkan True/ Falsedikembalikan? Semua pengembalian Python adalah:
<_sre.SRE_Match object at ...>
Jawaban:
Matchobjek selalu benar, dan Nonedikembalikan jika tidak ada kecocokan. Uji saja kebenarannya.
if re.match(...):
if re.match(...) is None:sebagai gantinya
re didesain seperti ini? Jika matchobjek selalu benar, mengapa tidak kembali Truedi tempat pertama, mengingat kita selalu perlu tahu apakah jawabannya benar atau salah?
Jika Anda benar-benar membutuhkan Trueatau False, gunakan sajabool
>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
Seperti jawaban lain telah menunjukkan, jika Anda hanya menggunakannya sebagai syarat untuk ifatau while, Anda dapat menggunakannya secara langsung tanpa membungkusnya.bool()
boolnilai diperlukan ketika pernyataan bersyarat berisi operasi aritmatika boolean. mis .: if (re.search ("a", "abc") & True):
&adalah operasi bitwise . andakan menjadi operasi boolean .
(re.search("a","abc") and True)
boolmembuat maksud programmer jelas bagi pembaca.
Ignacio Vazquez-Abrams benar. Tapi untuk menguraikan, re.match()akan mengembalikan None, yang mengevaluasi False, atau objek yang cocok, yang akan selalu Trueseperti yang dia katakan. Hanya jika Anda menginginkan informasi tentang bagian yang cocok dengan ekspresi reguler Anda, Anda perlu memeriksa konten objek pencocokan.
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.
import re
if re.search("c", "abcdef"):
print "hi"
Menghasilkan hisebagai keluaran.
Noneadalah default jika tidak ada yang dikembalikan secara eksplisit.
Anda dapat menggunakan re.match()atau re.search(). Python menawarkan dua operasi primitif yang berbeda berdasarkan ekspresi reguler: re.match()memeriksa kecocokan hanya di awal string, sementara re.search()memeriksa kecocokan di mana saja dalam string (ini yang dilakukan Perl secara default). lihat ini