Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Ungkapan Biasa Boleh Menemui Padanan Bertindih?
Dalam dunia ungkapan biasa, mengekstrak padanan bertindih adalah satu cabaran yang unik. Pertimbangkan contoh rentetan "nnnn", kami bertujuan untuk mengenal pasti semua padanan "nn", termasuk yang bertindih. Output yang dikehendaki ialah tiga padanan:
<code>- nn**nn** - n**nn**n - nn**nn**</code>
Satu cara untuk menyelesaikan masalah ini adalah dengan menggunakan penegasan hadapan. Ungkapan biasa (?<=n)n
sepadan dengan aksara 'n' yang bermula dengan 'n' yang lain. Teknik ini berkesan mengenal pasti kedudukan akhir jujukan "nn" yang bertindih:
<code>n**nn**nn nn**nn**n nn**nn**</code>
Sebagai alternatif, anda boleh menggunakan penegasan terbalik. Ungkapan biasa (?=nn)n
mencari aksara 'n' diikuti dengan 'n' yang lain. Kaedah ini memfokuskan pada kedudukan permulaan jujukan "nn" yang bertindih:
<code>**nn**nn n**nn**n nn**nn**</code>
Untuk menambah baik lagi kaedah penegasan terbalik, kami boleh menggabungkannya dengan kumpulan penangkapan. Ungkapan biasa (n)(?=(n))
menangkap aksara 'n' pertama dan kedua ke dalam dua kumpulan berasingan. Ini bukan sahaja membolehkan kami mencari jujukan "nn" yang bertindih, tetapi juga mengekstrak aksara individu:
<code>**n**nn n**n**n nn**n**</code>
Faedah pendekatan ini ialah keupayaannya untuk menyesuaikan diri dengan corak ekspresi biasa yang kompleks dalam penegasan terbalik dan mengekstrak padanan yang sepadan melalui rujukan belakang.
Atas ialah kandungan terperinci Bagaimanakah Ungkapan Biasa Boleh Menemui Padanan Bertindih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!