Ekspresi reguler (regular Expression) menjelaskan pola pencocokan string, yang dapat digunakan untuk memeriksa apakah suatu string berisi substring tertentu, mengganti substring yang cocok, atau mengekstrak substring yang memenuhi kondisi tertentu dari menunggu string tertentu.
Fungsi ekspresi reguler bahasa Perl sangat kuat, pada dasarnya yang paling kuat di antara bahasa-bahasa yang umum digunakan. Banyak bahasa mengacu pada ekspresi reguler Perl saat merancang dukungan ekspresi reguler.
Tiga bentuk ekspresi reguler Perl adalah pencocokan, penggantian, dan transformasi:
Pertandingan: m/
Penggantian: s/
Konversi: tr/
Ketiga bentuk ini umumnya digunakan dengan =~ atau !~ , =~ artinya cocok, !~ artinya tidak cocok.
Operator pencocokan m// digunakan untuk mencocokkan pernyataan string atau ekspresi reguler. Misalnya, untuk mencocokkan "run" di skalar $bar, kodenya adalah sebagai berikut:
Dengan mengeksekusi program di atas, hasil keluarannya adalah:
Pertandingan pertama Pertandingan kedua
Pencocokan pola memiliki beberapa pengubah yang umum digunakan, seperti yang ditunjukkan pada tabel berikut:
pengubah | menggambarkan |
---|---|
Saya | Abaikan huruf besar-kecil dalam pola |
M | mode multibaris |
Hai | Tetapkan nilai hanya sekali |
S | Mode satu baris, "." cocok dengan "n" (default tidak cocok) |
X | Abaikan spasi dalam pola |
G | pertandingan global |
cg | Setelah pencocokan global gagal, string yang cocok diperbolehkan untuk dicari lagi. |
Setelah Perl diproses, akan ada tiga nama variabel khusus untuk nilai yang cocok:
$`: Bagian sebelumnya dari string yang cocok
$&: string yang cocok
$': Belum ada string tersisa yang cocok
Jika Anda menggabungkan ketiga variabel ini, Anda akan mendapatkan string aslinya.
Contohnya adalah sebagai berikut:
Hasil keluaran dari eksekusi program di atas adalah:
String sebelum pencocokan: selamat datang di String sebelum pencocokan: jalankan String setelah pencocokan: situs oob.
Operator pengganti s/// merupakan perpanjangan dari operator pencocokan dan menggantikan string yang ditentukan dengan string baru. Format dasarnya adalah sebagai berikut:
s/POLA/GANTI/;
POLA adalah pola yang cocok, REPLACEMENT adalah string pengganti.
Misalnya, kita mengganti "google" pada string berikut dengan "codercto":
Hasil keluaran dari eksekusi program di atas adalah:
selamat datang di situs codecto.
Pengubah operasi penggantian ditunjukkan pada tabel berikut:
pengubah | menggambarkan |
---|---|
Saya | Jika "i" ditambahkan ke pengubah, ekspresi reguler akan membatalkan sensitivitas huruf besar-kecil, yaitu "a" dan "A" adalah sama. |
M | Awal reguler default "^" dan akhir "$" hanya untuk string reguler. Jika "m" ditambahkan ke pengubah, maka awal dan akhir akan merujuk ke setiap baris string: awal setiap baris adalah "^ ", diakhiri dengan "$". |
Hai | Ekspresi tersebut dieksekusi hanya sekali. |
S | Jika "s" ditambahkan ke pengubah, default "." yang mewakili karakter apa pun selain karakter baris baru akan menjadi karakter apa pun, termasuk karakter baris baru! |
X | Jika pengubah ini ditambahkan, karakter spasi putih dalam ekspresi akan diabaikan kecuali karakter tersebut telah di-escape. |
G | Ganti semua string yang cocok. |
e | Ganti string sebagai ekspresi |
Berikut ini adalah pengubah yang terkait dengan operator konversi:
pengubah | menggambarkan |
---|---|
C | Konversikan semua karakter yang tidak ditentukan |
D | Hapus semua karakter yang ditentukan |
S | Gabungkan beberapa karakter keluaran yang identik menjadi satu |
Contoh berikut mengubah semua huruf kecil dalam variabel $string menjadi huruf besar:
#!/usr/bin/perl $string = 'selamat datang di situs codercto.';$string =~ tr/az/Az/;print "$stringn";
Hasil keluaran dari eksekusi program di atas adalah:
SELAMAT DATANG DI SITUS CODERCTO.
Contoh berikut menggunakan /s untuk menghapus karakter berulang dari variabel $string:
Hasil keluaran dari eksekusi program di atas adalah:
runob
Contoh lainnya:
$string =~ tr/d/ /c; # Ganti semua karakter non-numerik dengan spasi $string =~ tr/t //d; # Hapus tab dan spasi $string =~ tr/0-9/ /cs # Ganti karakter lain antar angka dengan spasi.
ekspresi | menggambarkan |
---|---|
. | Cocok dengan semua karakter kecuali karakter baris baru |
X? | Cocokkan x string 0 atau sekali |
X* | Cocokkan string x 0 kali atau lebih, tetapi cocokkan sebanyak mungkin |
x+ | Cocokkan string x 1 kali atau lebih, tetapi cocokkan sebanyak mungkin |
.* | Cocok dengan karakter apa pun sebanyak 0 kali atau lebih |
.+ | Cocokkan karakter apa pun 1 kali atau lebih |
{M} | Cocok persis dengan m string yang ditentukan |
{M N} | Cocok dengan lebih dari m dan kurang dari n string tertentu |
{M,} | Cocokkan m atau lebih string tertentu |
[] | Mencocokkan karakter dalam [] |
[^] | Mencocokkan karakter yang tidak cocok dengan [] |
[0-9] | Cocok dengan semua karakter numerik |
[az] | Cocok dengan semua karakter alfabet huruf kecil |
[^0-9] | Cocok dengan semua karakter non-numerik |
[^az] | Cocok dengan semua karakter alfabet bukan huruf kecil |
^ | Cocok dengan karakter yang dimulai dengan |
$ | Cocok dengan karakter di akhir karakter |
D | Cocok dengan karakter numerik, sintaksisnya sama dengan [0-9] |
d+ | Cocok dengan beberapa string numerik, sintaksisnya sama seperti [0-9]+ |
D | Bukan angka, sama seperti yang laind |
D+ | Bukan angka, sama seperti d+ untuk yang lain |
w | Serangkaian huruf atau angka bahasa Inggris, sintaksisnya sama dengan [a-zA-Z0-9_] |
w+ | Sintaks yang sama seperti [a-zA-Z0-9_]+ |
W | Serangkaian huruf atau angka non-Inggris, sintaksisnya sama dengan [^a-zA-Z0-9_] |
W+ | Sintaks yang sama seperti [^a-zA-Z0-9_]+ |
S | Spasi, sintaksisnya sama dengan [ntrf] |
s+ | Sama seperti [ntrf]+ |
S | Non-spasi, sintaksisnya sama dengan [^ntrf] |
S+ | Sintaksnya sama dengan [^ntrf]+ |
B | Mencocokkan string yang dibatasi oleh huruf dan angka bahasa Inggris |
B | Mencocokkan string yang tidak dibatasi oleh huruf bahasa Inggris atau nilai numerik |
a|b|c | Mencocokkan string yang cocok dengan karakter, karakter b, atau karakter c |
abc | Cocokkan string (pola) yang mengandung abc() Simbol ini akan mengingat string yang ditemukan, yang merupakan sintaksis yang sangat praktis. String yang ditemukan di variabel pertama () menjadi variabel $1 atau variabel 1, string yang ditemukan di variabel kedua () menjadi variabel $2 atau variabel 2, dan seterusnya. |
/pola/i | i Parameter ini menunjukkan bahwa huruf besar/kecil bahasa Inggris diabaikan, artinya, saat mencocokkan string, masalah huruf besar/kecil bahasa Inggris tidak dipertimbangkan. Jika Anda ingin mencari karakter khusus dalam mode pola, seperti "*", Anda perlu menambahkannya sebelum karakter ini Gunakan simbol untuk membatalkan karakter khusus. |