pada perl dikenal beberapa statement regex untuk mengolah string. diantaranya akan saya bahas disini adalah match, subtitution dan translate
match
match adalah regex yang berguna untuk mencocokan kata pada suatu variable yang kita cari. outputnya dapat berupa boolean *1 true dan 0 false*, atau berupa pencocokan karakter untuk dimasukan kedalam variable. penggunaan syntaxnya adalah m/regex/
contoh :
boolean
sub belajar {
my $a = "ayo belajar subroutine";
my $boolean = ($a =~ m/belajar/);
return $boolean;
}
subroutine diatas akan memberikan output return berupa 1, karena pada var $a terdapat kata belajar yang cocok dengan regex yang ditulis.
sub belajar {
my $a = "ayo belajar subroutine";
my $boolean = ($a =~ m/males/);
return $boolean;
}
subroutine diatas akan memberikan output berupa 0, karena pada var $a tidak terdapat kata males seperti yang diminta pada regex
pencocokan karakter
sub belajar {
my $a = "ayo belajar subroutine";
my ($arg1, $arg2, $arg3) = ($a =~ m/(\w+)\s(\w+)\s(\w+)/);
return $arg1;
}
subroutine diatas akan memberikan output berupa "ayo", karena pada sub diatas $arg1 merupakan variable pertama yang dipakai untuk menyimpan (\w+) yang cocok di regex m/ / maka variable akan berturut2 berisi :
$arg1 = ayo
$arg2 = belajar
$arg3 = subroutine
operator
pada match, kita bisa menggunakan beberapa operator penting untuk memberi informasi regex yang kita cari, operator ini ditaruh di sebelah kanan regex match.
i membuat regex menjadi case insensitive
m menspesifikasi jika string memiliki baris baru, tanda ^ dan $ bisa dipakai
o memeriksa string hanya sekali
s membolehkan tanda . untuk cocok dengan newline
x memperbolehkan penggunaan whitespace untuk mempermudah penulisan
g mencari smua yang cocok secara global
cg terus mencari bahkan jika secara global gagal
contoh :
sub belajar {
my $a = "ayo belajar subroutine";
my $boolean = ($a =~ m/BELAJAR/i);
return $boolean;
}
akan memberikan return value berupa angka 1 walaupun tidak ada kata BELAJAR namun karena diberikan operator i, kata belajar menjadi cocok dengan kata BELAJAR, karena menjadi tidak case sensitive.
subtitution
subtitution adalah statement regex yang berfungsi untuk mereplace sebuah kata dengan kata lainnya yang kita inginkan. syntax penggunaannya adalah s/argument/argument/ dengan argumen awal adalah argumen yang dicari dan argumen akhir adalah argumen pengganti argumen awal.
contoh :
sub belajar {
my $a = "ayo belajar macro";
my $a =~ s/macro/subroutine/;
return $a;
}
pada subroutine diatas kata "ayo belajar macro" akan berubah menjadi "ayo belajar subroutine" karena kata macro cocok dengan regex dan pada statement diatas macro akan diganti dengan subroutine.
operator
pada subtitution, kita bisa menggunakan beberapa operator penting untuk memberi informasi regex yang kita cari, operator ini ditaruh di sebelah kanan regex subtitution.
i membuat regex menjadi case insensitive
m menspesifikasi jika string memiliki baris baru, tanda ^ dan $ bisa dipakai
o memeriksa string hanya sekali
s membolehkan tanda . untuk cocok dengan newline
x memperbolehkan penggunaan whitespace untuk mempermudah penulisan
g mencari smua yang cocok secara global
e mengganti seolah-olah itu adalah perl expression, dan menggunakan value awal sebagai teks pengganti
contoh :
sub belajar {
my $a = "ayo belajar macro";
$a =~ s/Macro/subroutine/i;
return $a;
}
pada subroutine diatas tidak ditemukan kata Macro, namun karena diberi operator i maka kata macro juga cocok dengan Macro, sehingga tindakan replace tetap dapat dilakukan.
translate
translate merupakan statement regex yang sangat mirip dengan subtitution, namun melakukannya per karakter kata. penggunaan syntaxnya dengan menuliskan tr/karakter/karakter/ dengan karakter di kiri akan di ganti dengan karakter dikanan.
contoh :
sub belajar {
my $a = "hahaha";
$a =~ tr/a/i/;
return $a;
}
pada subroutine diatas karakter a akan ditranslate menjadi i, sehingga $a akan berubah menjadi "hihihi"
sub belajar {
my $a = "hawhawhaw";
$a =~ tr/ahw/owk/;
return $a;
}
pada subroutine diatas karakter a akan diubah menjadi o, h menjadi w, dan w menjadi k, sehingga setelah di translate kata "hawhawhaw" akan berubah menjadi "wokwokwok"
sub belajar {
my $a = "ayo belajar subroutine";
$a =~ tr/a-z/A-Z/;
return $a;
}
pada subroutine diatas, karakter a-z akan diubah menjadi huruf besar, sehingga "ayo belajar subroutine" akan berubah menjadi "AYO BELAJAR SUBROUTINE"
operator modifier
pada translate, kita bisa menggunakan beberapa operator penting untuk memberi informasi regex dan memodifikasi hasil yang kita cari, operator ini ditaruh di sebelah kanan regex translate.
d menghilangkan karakter selain yang ditemukan
s menghilangkan huruf yang sama bersebelahan
contoh :
my $a = "ayo belajar subroutine";
$a =~ tr/a-z/ABCDE/d
return $a;
}
pada subroutine diatas, karakter ABCDE hanya berjumlah sama dengan a-z jika diurutkan menjadi abcde, namun karena fghijk dst tidak memiliki pasangan pada ABCDE maka karakter tersebut akan dihapus, karena kita memakai operator d. maka "ayo belajar subroutine" akan berubah menjadi "A BEAA UBE"
No comments:
Post a Comment