Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Cari Padanan Bertindih Menggunakan Ungkapan Biasa Python?

Bagaimanakah Saya Boleh Cari Padanan Bertindih Menggunakan Ungkapan Biasa Python?

Barbara Streisand
Barbara Streisandasal
2024-12-20 03:27:09213semak imbas

How Can I Find Overlapping Matches Using Python Regular Expressions?

Mencari Padanan Bertindih dengan Ungkapan Biasa

Dalam Python, menggunakan modul semula, mencari semua padanan bertindih corak boleh dicapai melalui penggunaan pandangan ke hadapan, yang menangkap perlawanan yang diingini sambil mengekalkan perlawanan sebenar secara teknikal tidak bertindih.

Merakam Pandangan Kumpulan di Hadapan:

Kunci untuk menangkap perlawanan bertindih adalah dengan menggunakan kumpulan penangkap dalam penegasan pandang ke hadapan. Lookahead menangkap teks yang diingini, tetapi padanan sebenar ialah subrentetan lebar sifar sebelum lookahead. Ini membolehkan padanan tidak bertindih secara teknikal:

import re

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

print(results)  # [1234567891, 2345678912, 3456789123, ...]

Dalam contoh ini, corak (d{10}) sepadan dengan jujukan 10 digit, manakala pandangan hadapan (?=) menangkap dan menegaskan kehadiran ini perlawanan. Padanan kemudian ditukar kepada integer menggunakan int(match.group(1)).

Teknik ini membolehkan pengecaman cekap semua padanan bertindih dalam rentetan yang lebih besar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Padanan Bertindih Menggunakan Ungkapan Biasa 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