Menggunakan ekspresi reguler Python bagaimana Anda bisa mendapatkan True
/ False
dikembalikan? Semua pengembalian Python adalah:
<_sre.SRE_Match object at ...>
Menggunakan ekspresi reguler Python bagaimana Anda bisa mendapatkan True
/ False
dikembalikan? Semua pengembalian Python adalah:
<_sre.SRE_Match object at ...>
Jawaban:
Match
objek selalu benar, dan None
dikembalikan jika tidak ada kecocokan. Uji saja kebenarannya.
if re.match(...):
if re.match(...) is None:
sebagai gantinya
re
didesain seperti ini? Jika match
objek selalu benar, mengapa tidak kembali True
di tempat pertama, mengingat kita selalu perlu tahu apakah jawabannya benar atau salah?
Jika Anda benar-benar membutuhkan True
atau 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 if
atau while
, Anda dapat menggunakannya secara langsung tanpa membungkusnya.bool()
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 mengembalikan None
, yang mengevaluasi False
, atau objek yang cocok, yang akan selalu True
seperti 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 hi
sebagai keluaran.
None
adalah 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