Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Cari Semua Kejadian Subrentetan dalam Rentetan Python?

Bagaimanakah Saya Boleh Cari Semua Kejadian Subrentetan dalam Rentetan Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-22 00:53:38862semak imbas

How Can I Find All Occurrences of a Substring in a Python String?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn