Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pembangunan PHP: Bagaimana untuk menulis ungkapan biasa yang cekap

Pembangunan PHP: Bagaimana untuk menulis ungkapan biasa yang cekap

WBOY
WBOYasal
2023-06-15 21:04:301295semak imbas

Dalam pembangunan PHP, ungkapan biasa ialah alat yang sangat penting untuk memadankan, mencari dan menggantikan rentetan tertentu dalam teks. Walau bagaimanapun, menulis ungkapan biasa yang cekap bukanlah tugas yang mudah dan memerlukan pembangun mempunyai kemahiran dan pengalaman tertentu.

Berikut ialah beberapa petua yang boleh membantu anda menulis ungkapan biasa yang cekap:

1 Gunakan padanan tidak tamak apabila boleh

Ekspresi biasa adalah tamak secara lalai , iaitu ia akan. padankan sebanyak mungkin teks. Dalam sesetengah kes, mungkin perlu menggunakan padanan yang tidak tamak untuk mengelakkan situasi ini. Padanan tidak tamak menggunakan pengubah suai "?" untuk membolehkan ungkapan biasa dipadankan dengan teks yang mungkin.

Contohnya, katakan anda mempunyai rentetan teks yang mengandungi berbilang tag ulasan seperti ini:

<!-- This is a comment --> some text here <!-- Another comment -->

Jika anda ingin menggunakan ungkapan biasa untuk mengekstrak kandungan tag ulasan, anda boleh menggunakan Regular berikut ungkapan:

/<!--.*?-->/

".*?" dalam kod ini mewakili padanan yang tidak tamak, yang akan memadankan teks sesedikit mungkin dan bukannya memadankan semua teg ulasan dalam keseluruhan rentetan.

2 Gunakan set aksara tertentu

Apabila menulis ungkapan biasa, anda harus menggunakan set aksara tertentu dan bukannya kad bebas apabila boleh. Contohnya, jika anda ingin memadankan set huruf kecil, anda harus menggunakan set aksara "[a-z]" dan bukannya aksara "."

Ini kerana apabila anda menggunakan kad bebas, ungkapan biasa cuba memadankan semua aksara yang mungkin, termasuk aksara yang tidak diingini. Ini menyebabkan ungkapan biasa menjadi sangat perlahan apabila memadankan teks.

Selain itu, apabila memadankan nombor atau aksara khas, anda hanya perlu memadankan aksara yang diperlukan, bukan semua aksara. Contohnya, jika anda ingin memadankan semua nombor dan titik perpuluhan, anda boleh menggunakan ungkapan biasa berikut:

/[d.]+/

Ungkapan biasa ini hanya sepadan dengan nombor dan titik perpuluhan dan tiada aksara lain.

3. Gunakan kumpulan penangkapan

Kumpulan penangkapan ialah sintaks ungkapan biasa khas yang boleh digunakan untuk mengekstrak subrentetan yang sepadan. Untuk meningkatkan kecekapan ungkapan biasa, hanya kumpulan penangkapan yang diperlukan harus digunakan.

Sebagai contoh, jika anda ingin memadankan alamat e-mel dan menyimpan nama pengguna serta nama domain ke dalam dua pembolehubah, anda boleh menggunakan ungkapan biasa berikut:

/([a-z0-9_.-]+)@([a-z0-9_.-]+.[a-z.]{2,6})/

Ungkapan biasa ini menggunakan dua kumpulan Menangkap , kumpulan penangkap pertama sepadan dengan nama pengguna, dan kumpulan penangkap kedua sepadan dengan nama domain. Apabila perlawanan berjaya, kandungan kedua-dua kumpulan tangkapan akan disimpan dalam dua pembolehubah masing-masing untuk memudahkan pemprosesan seterusnya.

4. Elakkan bersarang

Bersarang merujuk kepada kehadiran satu atau lebih subungkapan bersarang dalam ungkapan biasa. Bersarang boleh menjadikan ungkapan biasa menjadi sangat kompleks dan sukar difahami, dan juga boleh menyebabkan prestasi ungkapan biasa merosot.

Untuk mengelakkan bersarang, anda boleh menggantikan kumpulan menangkap dengan kumpulan bukan menangkap. Kumpulan bukan menangkap mempunyai sintaks yang sama seperti menangkap kumpulan, tetapi subrentetan yang sepadan tidak disimpan dalam pembolehubah.

Sebagai contoh, ungkapan biasa berikut menggunakan kumpulan tangkapan bersarang:

/^((?:http|https)://)?([w.]+).([a-z]{2,6})(?:[/w-]*)*/?/

Ungkapan biasa ini digunakan untuk memadankan URL yang mengandungi dua kumpulan tangkapan bersarang. Jika anda ingin mengelakkan bersarang, anda boleh menggantikan kumpulan menangkap dengan kumpulan bukan menangkap, seperti yang ditunjukkan di bawah:

/^(?:(?:http|https)://)?([w.]+).([a-z]{2,6})(?:[/w-]*)*/?/

Ungkapan biasa ini menggunakan dua kumpulan bukan menangkap untuk mengelakkan bersarang.

Ringkasnya, menulis ungkapan biasa yang cekap memerlukan kemahiran dan pengalaman tertentu. Dengan menggunakan padanan tidak tamak, set aksara khusus, kumpulan penangkapan yang diperlukan dan sintaks tidak bersarang, anda boleh meningkatkan kecekapan dan kebolehbacaan ungkapan biasa untuk menyelesaikan tugasan yang berkaitan dengan lebih baik.

Atas ialah kandungan terperinci Pembangunan PHP: Bagaimana untuk menulis ungkapan biasa yang cekap. 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