Mengekstrak Padanan Terpendek antara Dua Rentetan
Apabila berurusan dengan fail log yang besar, mengekstrak data tertentu antara dua rentetan boleh menjadi satu cabaran. Tugas menjadi lebih rumit apabila rentetan mula dan tamat berlaku beberapa kali sepanjang fail, dan output yang dikehendaki melibatkan padanan terpendek.
Regex Solution
Untuk menangani masalah ini , pendekatan ungkapan biasa boleh digunakan. Regex yang ideal akan menangkap teks antara rentetan mula dan akhir serta mengutamakan padanan terpendek.
Ungkapan biasa yang disediakan, (mula((?!mula).)*?akhir), memenuhi kriteria ini:
Pelaksanaan Menggunakan Python
Dalam Python, modul semula menawarkan fungsi yang diperlukan untuk menggunakan regex ini. Kod di bawah menunjukkan cara mengekstrak padanan terpendek menggunakan re.findall:
<code class="python">import re text = "start spam\nstart rubbish\nstart wait for it...\n profit!\nhere end\nstart garbage\nstart second match\nwin. end" matches = re.findall('(start((?!start).)*?end)', text, re.S) for match in matches: print(match)</code>
Output:
start wait for it... profit! here end start second match win. end
Pertimbangan Tambahan untuk Fail Besar
Untuk fail yang sangat besar (mis., 2GB), kecekapan menjadi penting. Pengoptimuman berikut boleh digunakan:
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Padanan Terpendek Antara Dua Rentetan dalam Python dengan Regex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!