Ungkapan biasa dengan ulangan bersarang

王林
Lepaskan: 2024-02-08 21:20:30
ke hadapan
1216 orang telah melayarinya

Ungkapan biasa dengan ulangan bersarang

editor php Xiaoxin akan memperkenalkan anda kepada ungkapan biasa dengan ulangan bersarang dalam artikel ini. Ungkapan biasa ialah alat padanan rentetan yang berkuasa yang boleh digunakan untuk mencari, menggantikan dan mengesahkan rentetan. Pengulangan bersarang merujuk kepada menggunakan satu atau lebih corak berulang dalam ungkapan biasa, dan corak berulang ini boleh bersarang dalam corak lain. Teknik ini boleh digunakan untuk memadankan teks dengan struktur hierarki, seperti teg HTML, kurungan bersarang, dsb. Dengan memahami sintaks dan penggunaan ungkapan biasa berulang bersarang, kami boleh mengendalikan pelbagai keperluan padanan rentetan kompleks dengan lebih fleksibel.

Kandungan soalan

Saya cuba mencipta ungkapan biasa dalam go yang sepadan sehingga 50 perkataan yang dipisahkan oleh ruang, dengan setiap perkataan adalah 1-32 "a" Saya menggunakan ungkapan biasa berikut

regexp.compile(`^(a{1,32}\s?){1,50}$`)
Salin selepas log masuk

Saya mendapat ralat berikut

error parsing regexp: invalid repeat count: `{1,50}`
Salin selepas log masuk

Saya perasan ia boleh berulang sehingga 31 kali, seperti ini

r, err := regexp.Compile(`^(a{1,32}\s?){1,31}$`)
Salin selepas log masuk

Lihat https://go.dev/play/p/rlnrox9-57_m

Penyelesaian

Enjin Go's regexp mempunyai had di mana gabungan peringkat atas dan sebarang ulangan dalaman tidak boleh melebihi 1000 salinan ulangan paling dalam bahagian . Ini didokumenkan dalam re2 spesifikasi tatabahasa.

Dalam kes anda, sehingga 31 berfungsi kerana dalam 32 * luar 31 = 992. 32 * 32 = 1024 dan 32 * 50 = 1600 tidak akan berfungsi melebihi had tersebut.

Penyelesaian adalah dengan membahagikan ungkapan kepada bahagian: ^(a{1,32}s?){1,31}(a{1,32}s?){0,19}$ p>

Atas ialah kandungan terperinci Ungkapan biasa dengan ulangan bersarang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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