Ungkapan Pandang Belakang Pembolehubah dalam Ungkapan Biasa
Ungkapan biasa memberikan keupayaan padanan corak yang kuat, tetapi pelaksanaan penegasan pandangan belakang panjang berubah telah sudah lama menjadi topik perdebatan.
Pelaksanaan dengan Penegasan Look Behind
Pada masa ini, penegasan lookback panjang pembolehubah disokong oleh modul regex dalam Python. Sintaksnya ialah (?
<code class="python">>>> import regex >>> m = regex.search('(?<!foo.*)bar', 'f00bar') >>> print(m.group()) bar >>> m = regex.search('(?<!foo.*)bar', 'foobar') >>> print(m) None</p> <p><strong>Alternatif Tanpa Penegasan Pandang di Sebalik</strong></p> <p>Jika tiada penegasan lihat di belakang, terdapat dua alternatif:</p> <ul> <li> <p><strong>K (Keep):</strong> Simbol ini menandakan satu titik dalam corak sebelum yang sebarang aksara yang dipadankan dibuang sebelum penggantian atau pengumpulan.</p> <pre class="brush:php;toolbar:false">s/(?<=foo.*)bar/moo/s;
Menjadi:
s/foo.*\Kbar/moo/s;
Pandangan Negatif: Teknik ini menggunakan negatif lihat ke hadapan untuk menyemak ketiadaan "foo".
s/(?<!foo.*)bar/moo/s;
Menjadi:
s/^(?:(?!foo).)*\Kbar/moo/s;
Pelaksanaan Masa Depan
Ketiadaan pandangan panjang berubah-ubah di belakang pernyataan dalam bahasa arus perdana seperti Perl dan JavaScript telah menimbulkan persoalan tentang pelaksanaan masa hadapan. Ada kemungkinan bahawa suatu hari nanti bahasa-bahasa ini akan menerima pakai modul ungkapan biasa yang dipertingkatkan serupa dengan regex Python.
Keterbatasan Alternatif
Soalan Tambahan
Atas ialah kandungan terperinci Ubah-Ubah Pandang Di Sebalik Penegasan: Masa Depan Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!