Bagaimana untuk Mengekstrak Padanan Terpendek Antara Dua Rentetan dalam Python dengan Regex?

DDD
Lepaskan: 2024-10-24 02:56:29
asal
265 orang telah melayarinya

How to Extract Shortest Matches Between Two Strings in Python with Regex?

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:

  • mula sepadan dengan rentetan permulaan dengan tepat.
  • ((?!mula).)*? sepadan dengan mana-mana watak kecuali mula berulang kali, menggunakan pengkuantiti malas *? untuk mengutamakan padanan terpendek.
  • akhir sepadan dengan rentetan penamat dengan tepat.

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

Output:

start wait for it...
    profit!
here end
start second match
win. end
Salin selepas log masuk

Pertimbangan Tambahan untuk Fail Besar

Untuk fail yang sangat besar (mis., 2GB), kecekapan menjadi penting. Pengoptimuman berikut boleh digunakan:

  • Gunakan pendekatan berasaskan penimbal untuk mengelakkan membaca keseluruhan fail ke dalam ingatan.
  • Gunakan bendera enjin ekspresi biasa seperti re.MULTILINE untuk mengendalikan berbilang- input talian.

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!

sumber:php
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!