Apabila memadankan rentetan bertindih dengan regex, adalah penting untuk memahami cara kaedah padanan dan penimbalan ungkapan biasa berfungsi.
Secara lalai, kaedah padanan dengan bendera global (g) dalam ungkapan biasa menggunakan aksara yang dipadankan dan memajukan indeks ke kedudukan sejurus selepas subrentetan yang dipadankan. Contohnya, regex /d{3}/g akan memadankan jujukan tiga digit, tetapi ia hanya akan mengembalikan satu padanan kerana ia menggunakan aksara yang dipadankan.
Untuk memadankan rentetan bertindih, anda boleh menggunakan penegasan lebar sifar, yang merupakan pandangan positif dengan kumpulan penangkap. Penegasan ini menguji semua kedudukan dalam rentetan input, dan jika padanan ditemui, kumpulan penangkap menangkap subrentetan yang sepadan. Sifat RegExp.lastIndex kemudiannya dimajukan secara manual untuk mengelakkan gelung tak terhingga.
Jika bahasa pengaturcaraan anda menyokong kaedah matchAll, anda boleh menggunakannya untuk melaksanakan penegasan lebar sifar dan cari semua padanan bertindih. Sebagai contoh, dalam JavaScript, kod berikut menggunakan matchAll untuk mencari semua subrentetan tiga digit yang bertindih dalam rentetan "12345":
var re = /(?=(\d{3}))/g; console.log(Array.from('12345'.matchAll(re), x => x[1]));
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memadankan Rentetan Bertindih Menggunakan Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!