Dalam sebuah program yang saya tulis saya punya Python menggunakan re.search()
fungsi untuk menemukan kecocokan dalam blok teks dan mencetak hasilnya. Namun, program keluar setelah menemukan kecocokan pertama di blok teks.
Bagaimana saya melakukan ini berulang kali ketika program tidak berhenti sampai SEMUA kecocokan ditemukan? Apakah ada fungsi terpisah untuk melakukan ini?
Jawaban:
Gunakan
re.findall
ataure.finditer
sebagai gantinya.re.findall(pattern, string)
mengembalikan daftar string yang cocok.re.finditer(pattern, string)
mengembalikan iterator di atasMatchObject
objek.Contoh:
sumber
finditer
adalah apa yang saya cari. Saya terkejut bahwa satu mengembalikan objek Match dan string lainnya. Saya mengharapkan untuk menggunakanmatch_all
ataumatch_iter
fungsi.re.search
dalam satu lingkaran. Ini akan mengembalikanMatch
objek. Anda ingin meneruskanMatch.start() + 1
sebagaipos
argumen untukre.search
iterasi loop berikutnya.findall
akan mengembalikan daftar tupel yang cocok, bukan daftar string yang cocok.