Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh mencari semua kejadian subrentetan dalam Python?
Mencari Semua Kejadian Subrentetan dalam Python
Dalam Python, anda boleh menggunakan string.find() dan string.rfind() kaedah untuk mendapatkan semula indeks subrentetan dalam rentetan yang lebih besar. Walau bagaimanapun, tiada fungsi terbina dalam yang direka khusus untuk mengembalikan semua kejadian subrentetan.
Menggunakan Ungkapan Biasa
Pendekatan yang lebih berkuasa untuk mencari berbilang subrentetan kejadian adalah menggunakan ungkapan biasa:
import re # Sample string string = "test test test test" # Find all occurrences of "test" matches = [m.start() for m in re.finditer('test', string)] print(matches) # Output: [0, 5, 10, 15]
re.finditer menjana penjana yang menghasilkan padanan individu objek. Setiap objek padanan menyediakan indeks permulaan subrentetan yang sepadan.
Mempertimbangkan Padanan Bertindih
Secara lalai, pencari semula mencari padanan yang tidak bertindih. Untuk mencari padanan bertindih, gunakan pandangan positif:
matches = [m.start() for m in re.finditer('(?=tt)', 'ttt')] print(matches) # Output: [0, 1]
Ungkapan (?=tt) menegaskan bahawa subrentetan "tt" muncul pada kedudukan semasa tetapi tidak menggunakannya.
Reverse Find-All Tanpa Tindih
Untuk melakukan reverse find-all tanpa bertindih padan, gabungkan pandangan positif dan negatif:
search = 'tt' matches = [m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')] print(matches) # Output: [1]
Ungkapan ini memastikan bahawa "tt" muncul serta-merta selepas kursor tetapi tidak dalam julat lihat belakang tertentu (len(search)-1) dalam arah songsang.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mencari semua kejadian subrentetan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!