Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menggunakan Regex untuk Mencari Padanan Bertindih dalam Rentetan?

Bagaimanakah Saya Boleh Menggunakan Regex untuk Mencari Padanan Bertindih dalam Rentetan?

Patricia Arquette
Patricia Arquetteasal
2024-12-06 05:19:10943semak imbas

How Can I Use Regex to Find Overlapping Matches in a String?

Padanan Rentetan Bertindih dengan Regex

Dalam rentetan "12345," menggunakan ".match(/d{3}/g)" sebaiknya mengembalikan tiga padanan: "123," "234," dan "345." Walau bagaimanapun, hanya satu perlawanan ("123") diperoleh.

Sebab:

Bendera global "g" dalam regex menggunakan tiga digit dan memajukan indeks ke kedudukan selepas perlawanan pertama. Ini bermakna apabila regex cuba memadankan subrentetan seterusnya, indeks sudah berada pada kedudukan 3, dengan berkesan melangkau padanan bertindih yang tinggal.

Penyelesaian: Penegasan Lebar Sifar

Penegasan lebar sifar, khususnya pandangan positif dengan kumpulan penangkap, boleh digunakan untuk memadankan semua kedudukan dalam rentetan input. Teknik ini melibatkan:

  • Menguji setiap kedudukan menggunakan penegasan pandang ke hadapan.
  • Memajukan sifat RegExp.lastIndex secara manual untuk mengelakkan gelung tak terhingga.

Contoh dalam JavaScript:

var re = /(?=(\d{3}))/g;
console.log(Array.from('12345'.matchAll(re), x => x[1]));

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Regex untuk Mencari Padanan Bertindih dalam Rentetan?. 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