Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah komponen ungkapan biasa "[^][]" berfungsi dalam memadankan kurungan segi empat sama bersarang?
Apakah Maksud Regex "[^][]"?
Dalam regex yang disediakan:
\[(?:[^][]|(?R))*\]
komponen regex "[^][]" ialah kelas aksara yang sepadan dengan mana-mana aksara kecuali "[" atau "]".
Penjelasan Kelas Aksara
A kelas watak sepadan dengan mana-mana watak dalam julat aksara yang diberikan. Dalam kes ini, "[^]" bermaksud "tidak diikuti oleh ]", jadi "[^][]" secara berkesan sepadan dengan mana-mana watak yang tidak diikuti oleh "]".
Rekursi Regex
Kurungan di sekeliling "[^][]" menunjukkan kumpulan yang tidak menangkap. Di dalam kumpulan, token "?R" mewakili rujukan rekursif kepada keseluruhan regex. Ini membolehkan regex memadankan kurungan persegi bersarang.
Mengelakkan Urutan Melarikan Diri
Perhatikan bahawa, dalam PCRE (enjin regex yang digunakan oleh fungsi preg_ PHP), ia tidak diperlukan untuk melepaskan "[" atau "]" dalam kelas aksara. Ini kerana tidak jelas bahawa "]" dalam "[^][]" tergolong dalam kelas aksara.
Pengubah Suai xx Sebaris (PHP 7.3 )
Dalam PHP 7.3 , anda boleh menggunakan pengubah suai sebaris xx untuk mengabaikan aksara kosong dalam kelas aksara. Ini membolehkan anda menulis kelas yang kurang samar-samar berikut:
(?xx) [^ ][ ] [ ] ] [ [ ] [^ [ ]
Keserasian dan Keanehan
Sintaks "[^][]" serasi dengan kebanyakan perisa regex , termasuk PCRE, Perl, Python, Java dan lain-lain. Walau bagaimanapun, ia tidak dikenali dalam Ruby dan JavaScript (kecuali dalam versi Internet Explorer yang lebih lama).
Pemadanan Kurungan Square Bersarang
Dalam konteks contoh regex anda, "[^][]" memastikan bahawa kurungan segi empat sama seimbang dipadankan, membolehkan padanan kurungan empat segi bersarang.
Nota Tambahan
Atas ialah kandungan terperinci Bagaimanakah komponen ungkapan biasa "[^][]" berfungsi dalam memadankan kurungan segi empat sama bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!