Pendek untuk ungkapan biasa, regex adalah rentetan teks yang membolehkan anda membuat pola yang membantu memadankan, mencari, dan mengurus teks. Perl adalah contoh hebat dari bahasa pengaturcaraan yang menggunakan ungkapan biasa. Walau bagaimanapun, satu-satunya tempat yang boleh anda dapati ungkapan biasa. Ungkapan biasa juga boleh digunakan dari baris perintah dan dalam editor teks untuk mencari teks dalam fail.
Apabila pertama kali cuba memahami ekspresi reguler, seolah-olah ia adalah bahasa yang berbeza. Walau bagaimanapun, menguasai ungkapan biasa boleh menjimatkan ribuan jam jika anda bekerja dengan teks atau perlu mengurai sejumlah besar data. Berikut adalah contoh ungkapan biasa dengan setiap komponennya berlabel. Ungkapan biasa ini juga ditunjukkan dalam contoh-contoh pengaturcaraan Perl yang ditunjukkan di kemudian halaman ini.
Asas ungkapan teratur (lembaran cheat)
Melihat contoh di atas mungkin sangat menggembirakan. Walau bagaimanapun, sebaik sahaja anda memahami sintaks dasar tentang bagaimana arahan ungkapan biasa beroperasi, anda boleh membaca contoh di atas seolah-olah anda membaca ayat ini. Malangnya, tidak semua program, arahan, dan bahasa pengaturcaraan menggunakan ungkapan biasa yang sama, tetapi mereka semua berkongsi persamaan.
Watak | Apa yang dilakukannya? | Contoh | Perlawanan |
---|---|---|---|
^ | Memadankan permulaan garis | ^ abc | abc, abcdef .., abc123 |
$ | Perlawanan akhir baris | abc $ | saya: abc, 123abc, theabc |
. | Padan mana-mana watak | ac | abc, asg, a2c |
| | ATAU pengendali | abc | xyz | abc atau xyz |
(...) | Tangkap apa-apa yang sepadan | (a) b (c) | Menangkap 'a' dan 'c' |
(?: ...) | Kumpulan tidak menangkap | (a) b (?: c) | Menangkap 'a' tetapi hanya kumpulan 'c' |
[...] | Memadankan apa-apa yang terkandung dalam kurungan | [abc] | a, b, atau c |
[^ ...] | Memadankan apa-apa yang tidak terkandung dalam kurungan | [^ abc] | xyz, 123, 1de |
[az] | Memadankan sebarang aksara antara 'a' dan 'z' | [bz] | bc, fikiran, xyz |
{x} | Jumlah 'x' yang tepat untuk dipadankan | (abc) {2} | abcabc |
{x, } | Padam 'x' jumlah kali atau lebih | (abc) {2, } | abcabc, abcabcabc |
{x, y} | Padankan antara masa 'x' dan 'y'. | (a) {2, 4} | aa, aaa, aaaaa |
* | Perlawanan tamak yang sepadan dengan segala-galanya di tempat * | ab * c | abc, abbcc, abcdc |
+ | Memadankan watak sebelum + satu atau lebih kali | a + c | ac, aac, aaac, |
? | Memadankan watak sebelum? sifar atau satu kali. Juga, digunakan sebagai perlawanan yang tidak tamak | ab? c | ac, abc |
\ | Melarikan diri dari karakter selepas backslash atau membuat urutan melarikan diri. | a \ sc | ac |
Melarikan diri aksara (urutan melarikan diri)
Nota: melarikan diri aksara adalah sensitif huruf.
Watak | Apa yang dilakukannya? |
---|---|
\ | Mana-mana watak yang tidak disebutkan di bawah didahului dengan \ akan terlepas. Sebagai contoh, \. sepadan dengan tempoh dan tidak melaksanakan fungsi yang disebutkan di atas. Watak-watak yang perlu dilarikan adalah () [] {} ^ $. | * +? \ |
\ 0 | Null aksara |
\ a | Sesuaikan loceng atau penggera. |
\ b | Batasan kata dalam kebanyakan atau ruang belakang |
\ B | Sempadan bukan perkataan |
\ d | Padankan sebarang angka perpuluhan (0-9) |
\ D | Padankan sebarang angka |
\ e | Padankan pelarian |
\ f | Padan suapan borang |
\ n | Padan baris baru |
\ Q ... \ E | Abaikan sebarang makna khas dalam apa yang dipadankan. |
\ r | Padankan kembali kereta |
\ s | Memadankan watak ruang (ruang, \ t, \ r, \ n) |
\ S | Memadankan sebarang watak ruang bukan putih |
\ t | Padankan tab |
\ v | Padankan tab menegak |
\ w | Memadankan mana-mana satu aksara kata [a-zA-Z_0-9] |
\ W | Memadankan mana-mana satu aksara bukan perkataan |
Bendera ungkapan biasa
Di luar ungkapan biasa (pada akhir) bendera boleh digunakan untuk membantu dengan padanan corak.
Watak | Apa yang dilakukannya? |
---|---|
i | Abaikan kes itu (kes atas dan bawah dibenarkan) |
m | Perlawanan pelbagai baris |
s | Padan baris baru |
x | Benarkan ruang dan komen |
J | Nama kumpulan pendua dibenarkan |
U | Perlawanan Ungreedy |
Contoh bahasa pengaturcaraan Perl yang biasa
Berikut adalah beberapa contoh ungkapan biasa dan padanan corak dalam Perl. Banyak contoh-contoh ini sama atau sama dengan bahasa pengaturcaraan dan program lain yang menyokong ungkapan biasa.
$ data = ~ s / data buruk / data yang baik / i;
Contoh di atas menggantikan apa-apa "data buruk" dengan "data yang baik" menggunakan perlawanan kesensitifan kes. Jadi jika pemboleh ubah data $ "Ini adalah data buruk" ia akan menjadi "Berikut adalah data yang baik".
$ data = ~ s / a / A /;
Contoh ini menggantikan mana-mana huruf kecil dengan huruf besar A. Jadi jika $ data adalah "contoh" ia akan menjadi "exAmple".
$ data = ~ s / [az] / * /;
Contoh di atas menggantikan sebarang huruf kecil, melalui z, dengan asterisk. Jadi jika $ data adalah "Contoh" ia akan menjadi "E ******".
$ data = ~ s / e $ / es /;
Contoh ini menggunakan watak $, yang memberitahu ungkapan biasa untuk memadankan teks sebelum ia di hujung rentetan. Jadi jika $ data adalah "contoh" ia akan menjadi "contoh".
$ data = ~ s /\./!/;
Dalam contoh di atas, kita menggantikan tempoh dengan tanda seru. Kerana tempoh itu adalah meta-karakter jika anda hanya memasuki tempoh tanpa \ (melarikan diri) ia diperlakukan sebagai sebarang aksara. Dalam contoh ini, jika $ data adalah "contoh." ia akan menjadi "contoh!", bagaimanapun, jika anda tidak melarikan diri, ia akan menggantikan setiap watak dan menjadi "!!!!!!!!"
$ data = ~ s / ^ e / E /;
Akhirnya, dalam contoh di atas, karet (^) memberitahu ungkapan biasa untuk memadankan apa-apa pada permulaan garisan. Dalam contoh ini, ini akan sepadan dengan mana-mana huruf kecil pada permulaan garisan dan menggantikannya dengan modal E. Oleh itu, jika $ data adalah "contoh" ia akan menjadi "Contoh".
Petua: Jika anda ingin meneroka ungkapan biasa lebih banyak dalam perintah seperti grep, atau ungkapan biasa dalam bahasa pengaturcaraan, lihat buku O'Reilly "Menguasai ungkapan biasa."
Akronim komputer, urutan melarikan diri, Ungkapan, Glob, Meta-aksara, Pengaturcaraan, Tilde, Wildcard