Rumah >masalah biasa >ungkapan biasa perl
Ungkapan biasa ialah alat yang berkuasa untuk memadankan dan memproses teks Ungkapan biasa dalam bahasa Perl mempunyai fleksibiliti dan fungsi yang tinggi. Perl menggunakan sintaks ungkapan biasa standard dan memanjangkannya, menjadikan ungkapan biasa Perl sebagai alat pilihan untuk banyak tugas pengaturcaraan.
Sintaks ungkapan biasa Perl adalah berdasarkan PCRE (Perl Compatible Regular Expressions), yang bukan sahaja menyokong padanan asas, penggantian dan fungsi lain, tetapi juga menyediakan satu siri ciri dan pengubah suai untuk memproses corak teks yang lebih kompleks.
1. Sintaks asas
Dalam Perl, ungkapan biasa dikelilingi oleh aksara slash (/), contohnya: /pattern/. Bahagian antara garis miring adalah corak yang ingin kita padankan.
Padanan langsung:
Ungkapan biasa yang paling mudah ialah padanan langsung. Contohnya, /hello/ boleh digunakan untuk memadankan "hello" dalam rentetan.
Dalam Perl, jika terdapat kandungan dalam rentetan yang betul-betul sepadan dengan corak, kedudukan yang sepadan (indeks) akan dikembalikan. Jika tiada padanan ditemui, undefined dikembalikan.
Metacharacters:
Terdapat beberapa aksara khas dalam ungkapan biasa Perl, dipanggil metacharacters, yang mempunyai makna istimewa. Contohnya:
(tempoh): sepadan dengan mana-mana aksara kecuali aksara baris baharu.
(asterisk): Padankan elemen sebelumnya beberapa kali.
(tanda tambah): Padankan elemen sebelumnya satu kali atau lebih.
(tanda soal): Padankan elemen sebelumnya sifar atau satu kali.
(karet): Padan dengan permulaan rentetan.
(tanda dolar): Padan dengan hujung tali.
Kelas watak:
Kelas aksara digunakan untuk memadankan satu set aksara. Dalam Perl, kelas aksara disertakan dalam kurungan segi empat sama ([]) dan senaraikan aksara untuk dipadankan. Contohnya:
[abc]: sepadan dengan mana-mana aksara antara "a", "b" atau "c".
[a-z]: Padankan mana-mana huruf kecil.
[^a-z]: Memadankan mana-mana aksara yang bukan huruf kecil.
Quantifier:
Quantifier digunakan untuk menentukan bilangan kejadian aksara yang sepadan. Dalam Perl, pengkuantiti diwakili menggunakan pendakap kerinting ({}).
Contohnya:
{n}: Padankan elemen sebelumnya yang muncul n kali.
{n,}: Padankan elemen sebelumnya yang muncul sekurang-kurangnya n kali.
{n,m}: Padankan elemen sebelumnya yang muncul sekurang-kurangnya n kali dan paling banyak m kali.
Watak melarikan diri:
Sesetengah watak mempunyai makna istimewa dalam ungkapan biasa Jika kita mahu memadankan watak istimewa ini sendiri, kita perlu menggunakan watak melarikan diri. Dalam Perl, aksara melarikan diri diwakili menggunakan garis miring ke belakang ().
Contohnya:
.: Padan dengan watak noktah (.) itu sendiri.
: Padan dengan aksara sengkang terbalik () itu sendiri.
2. Ciri lanjutan
Selain sintaks asas, ungkapan biasa Perl juga menyediakan beberapa ciri lanjutan yang membolehkannya mengendalikan corak teks yang lebih kompleks.
Kumpulan dan Rujukan:
Dalam ungkapan biasa, kita boleh menggunakan kurungan (()) untuk mengumpulkan set elemen. Dengan cara ini, kita boleh memadankan atau memproses elemen ini secara keseluruhan.
Sebagai contoh, /(ab)+/ boleh memadankan berbilang kejadian berturut-turut bagi "ab".
Selain itu, kita juga boleh menggunakan garis serong ke belakang diikuti dengan huruf nombor kumpulan (1, 2, dll.) untuk merujuk kepada kandungan kumpulan sebelumnya untuk pemprosesan selanjutnya teks.
Sebagai contoh, /(ab)1/ boleh memadankan kejadian berturut-turut bagi "ab" yang sama.
Penegasan lebar sifar:
Penegasan lebar sifar ialah ciri yang sepadan dengan kedudukan abstrak dan bukannya aksara itu sendiri. Ungkapan biasa Perl menyediakan beberapa pernyataan lebar sifar yang biasa digunakan:
(?=corak): Prasemak positif positif, memadankan kedudukan sebelum corak.
Sebagai contoh, /hello(?=world)/ boleh memadankan "hello" diikuti dengan "world".
(?!corak): Pra-semakan negatif positif, padanan tidak sepadan dengan kedudukan di hadapan corak.
Sebagai contoh, /hello(?!world)/ boleh memadankan "hello" yang tidak diikuti dengan "dunia".
(?<=corak): Membalikkan pra-semak positif, memadankan kedudukan selepas corak.
Sebagai contoh, /(?<=hello)world/ boleh memadankan "dunia" diikuti dengan "hello".
(?
Sebagai contoh, /(?
Penggantian dan Pengekstrakan:
Selain teks yang sepadan, kami juga boleh menggunakan ungkapan biasa untuk operasi penggantian dan pengekstrakan.
Penggantian: Gunakan operator gantian (s///) untuk menggantikan kandungan yang dipadankan dengan rentetan yang ditentukan.
Sebagai contoh, $str =~ s/pattern/replace/ boleh menggantikan corak yang dipadankan dalam $str dengan replace.
Pengeluaran: Gunakan pengumpulan tangkapan untuk mengekstrak subrentetan yang dipadankan.
Sebagai contoh, jika terdapat rentetan $str, kita boleh menggunakan $str =~ /(corak)/ untuk memadankan dan mengekstrak subrentetan di mana corak terletak.
Ringkasan:
Perl ekspresi biasa ialah alat yang berkuasa dengan sintaks yang fleksibel dan ciri yang kaya, dan mempunyai pelbagai aplikasi dalam pemprosesan teks. Melalui ungkapan biasa, kami boleh melakukan pemadanan teks, penggantian, pengekstrakan dan operasi lain dengan mudah, meningkatkan kecekapan dan fleksibiliti pengaturcaraan. Apabila menggunakan ungkapan biasa Perl, anda harus biasa dengan pelbagai sintaks asas dan ciri lanjutan, dan gunakannya dengan baik untuk menyelesaikan masalah praktikal.
Atas ialah kandungan terperinci ungkapan biasa perl. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!