Dalam perbincangan baru -baru ini, sesetengah orang mempersoalkan kecekapan menggunakan bukan
atau dalam ungkapan biasa. Tidak disangka -sangka, ujian dalam enjin ekspresi biasa C#menunjukkan bahawa kecekapan [0123456789]
lebih rendah daripada dua pilihan yang lain. [0-9]
d
Penyebab kecekapan rendah d
Nombor Unicode:
Mengandungi semua nombor Unicode, bukan hanya 0-9 biasa. Oleh itu, nombor bukan standard analitik boleh melambatkan kelajuan enjin ekspresi biasa.d
, ia mungkin memerlukan pemprosesan yang lebih rumit. Fungsi tambahan ini menjejaskan kecekapan. d
[0-9]
Untuk membuktikan masalah ini, ujian berikut dilakukan: 10,000 rentetan rawak, setiap rentetan mengandungi 1,000 aksara, separuh daripadanya mengandungi nombor. setiap ekspresi biasa (
,,
) masa untuk memproses rentetan yang dibelanjakan:d
dari segi kecekapan. [0-9]
[0123456789]
Kesimpulan 正则表达式 | 时间 | 相对d的时间百分比 |
---|---|---|
d |
00:00:00.2141226 | 100% |
[0-9] |
00:00:00.1357972 | 63.42% |
[0123456789] |
00:00:00.1388997 | 64.87% |
atau [0-9]
. [0123456789]
Atas ialah kandungan terperinci Adakah \ d sangat kurang cekap daripada [0-9] atau [0123456789] dalam regex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!