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
Lepaskan: 2024-12-22 00:53:38
asal
887 orang telah melayarinya

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]
Salin selepas log masuk

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]
Salin selepas log masuk

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]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan