Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Cari Semua Kejadian Subrentetan dalam Rentetan Python?
Mencari Semua Kejadian Substring
Python menyediakan keupayaan manipulasi rentetan yang luas, termasuk fungsi string.find() dan string.rfind( ) yang masing-masing mendapatkan kejadian pertama subrentetan dari awal dan akhir. Walau bagaimanapun, fungsi ini gagal apabila kita berusaha untuk mencari semua kemunculan subrentetan.
Penyelesaian: Memanfaatkan Ungkapan Biasa
Jika tiada rentetan "terbina dalam .find_all()", kita boleh memanfaatkan kuasa ungkapan biasa:
import re text = "test test test test" # Find all occurrences of "test" matches = [m.start() for m in re.finditer('test', text)] # Print the found indexes print(matches) # [0, 5, 10, 15]
Penyelesaian ini berulang atas hasil re.finditer('test', text), penjana yang menghasilkan objek padanan untuk setiap kejadian yang ditemui. Dengan mengekstrak sifat start() daripada setiap perlawanan, kami memperoleh senarai indeks yang mewakili kedudukan subrentetan dalam rentetan asal.
Mengendalikan Padanan Bertindih
Jika perlawanan bertindih dibenarkan, ia boleh dirakam dengan menggunakan pernyataan pandangan ke hadapan dalam biasa ungkapan:
matches = [m.start() for m in re.finditer('(?=tt)', 'ttt')] # [0, 1]
Melakukan Carian Songsang
Untuk melakukan carian terbalik-semua tanpa pertindihan, gabungan pandangan positif dan negatif boleh digunakan:
search = 'tt' matches = [m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')] # [1]
Dengan menggunakan ungkapan biasa, kami boleh mengenal pasti dan mendapatkan semula semua kejadian subrentetan dalam Python dengan berkesan rentetan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Semua Kejadian Subrentetan dalam Rentetan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!