Rumah >pembangunan bahagian belakang >Tutorial Python >Bolehkah Python Regex Menangkap Subcorak Berulang dengan Berkesan?

Bolehkah Python Regex Menangkap Subcorak Berulang dengan Berkesan?

DDD
DDDasal
2024-11-24 10:46:11634semak imbas

Can Python Regex Capture Repeated Subpatterns Effectively?

Merakam Subcorak Berulang dalam Python Regex

Apabila memadankan corak kompleks, menangkap subcorak berulang boleh meningkatkan prestasi regex. Walaupun ungkapan biasa Python mempunyai had dalam mengulang tangkapan, terdapat penyelesaian untuk menangkap corak yang diingini dengan berkesan.

Pemisahan dan Penggabungan

Satu pendekatan, yang dicadangkan dalam jawapan yang disediakan, ialah untuk memadankan keseluruhan corak pada mulanya dan membahagikan subcorak kemudian. Pendekatan ini memudahkan regex tetapi memerlukan langkah tambahan untuk pemisahan. Sebagai contoh, pertimbangkan padanan alamat e-mel:

import re

pattern = r'(.+?)@(\w+\.\w+)'
text = "yasar@webmail.something.edu.tr"

match = re.match(pattern, text)
if match:
    email_address, domain = match.groups()
    subdomains = domain.split(".")

Kumpulan Regex

Jika coraknya lebih kompleks dan subcorak mempunyai ciri yang berbeza, kumpulan regex (iaitu, kurungan ) boleh digunakan untuk menangkapnya secara langsung. Pertimbangkan corak berikut:

pattern = r'(\w+)?\((\d+) entries?\)'

Corak ini sepadan dengan perkataan dan ungkapan kurungan pilihan yang mengandungi nombor dan teks "entri" (atau "entri"). Kumpulan yang ditangkap boleh diakses melalui objek perlawanan:

text = "Received 10 entries for yesterday"

match = re.match(pattern, text)
if match:
    word, count = match.groups()
    if word:
        print("Word:", word)
    if count:
        print("Count:", count)

Pendekatan ini membolehkan penangkapan terus subcorak tanpa memerlukan rutin pemisahan yang kompleks.

Atas ialah kandungan terperinci Bolehkah Python Regex Menangkap Subcorak Berulang dengan Berkesan?. 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