Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Mencari Semua Padanan Bertindih Menggunakan Python Regex?

Bagaimana Mencari Semua Padanan Bertindih Menggunakan Python Regex?

Susan Sarandon
Susan Sarandonasal
2024-12-16 03:57:15491semak imbas

How to Find All Overlapping Matches Using Python Regex?

Mencari Padanan Bertindih Menggunakan Regex dalam Python

Dalam operasi carian, selalunya perlu untuk mengenal pasti dan mendapatkan semula kejadian berbilang corak tertentu dalam teks yang lebih besar. Apabila padanan bertindih, teknik padanan regex standard mungkin terlepas beberapa keadaan. Soalan ini meneroka cara mencari semua padanan bertindih menggunakan ungkapan biasa Python.

Matlamatnya ialah untuk mengekstrak setiap set 10 digit nombor dalam jujukan nombor tertentu. Sebagai contoh, dalam rentetan "123456789123456789," kami berhasrat untuk mendapatkan:

[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]

Menangkap Kumpulan dan Pandangan

Untuk mencapai matlamat ini, kami menggunakan kumpulan penangkap dalam pandangan ke hadapan. Pandangan hadapan mengenal pasti teks yang diminati (di sini, nombor 10 digit), tetapi padanan sebenar ialah subrentetan lebar sifar sebelum pandangan hadapan. Ini mengakibatkan padanan tidak bertindih.

Pelaksanaan

Dengan menggunakan kaedah pencari, kita boleh mendapatkan padanan seperti berikut:

import re
s = "123456789123456789"
matches = re.finditer(r'(?=(\d{10}))', s)
results = [int(match.group(1)) for match in matches]

hasil output mengembalikan senarai padanan bertindih yang dikehendaki:

[1234567891,
 2345678912,
 3456789123,
 4567891234,
 5678912345,
 6789123456,
 7891234567,
 8912345678,
 9123456789]

Pendekatan ini dengan cekap mengekstrak semua kejadian bertindih bagi corak yang ditentukan, menyediakan teknik yang berharga untuk pemprosesan teks yang komprehensif.

Atas ialah kandungan terperinci Bagaimana Mencari Semua Padanan Bertindih Menggunakan Python Regex?. 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