at 9:09 PM

Emacs - Replace dengan teknik Grouping pada Regex

Regex atau regexp (Regular Expression) merupakan salah satu teknik pencarian pada komputer yang benar-benar sangat membantu terutama dalam mengolah teks atau string. Salah teknik yang ada pada regexp adalah grouping, dimana kita bisa memfilter kata yang kita cari yang dimasukkan kedalam variabel sementara yang nanti bisa kita panggil untuk keperluan penggantian teks tersebut(replace).
Sederhananya begini adalah sebuah kalimat seperti berikut 
class="kolom satu"
class="kolom dua"
class="kolom tiga"
class="baris satu"
class="baris dua"
class="baris tiga"
Kemudian kita ingin mengganti semua kata setelah kolom dengan kosong, tapi hanya apabila kata setelah kolom tersebut adalah kata satu.
Secara manual bisa dengan mengganti satu persatu, tapi bagaimana kalo ada 10 atau 1000 kalimat yang mirip kalimat diatas, tentu cara ini akan sangat membosankan dan tidak efektif.
Dengan Regexp hal ini bisa dilakukan hanya dengan sekali jalan. Kali ini saya ingin menggunakan Emacs Regexps untuk melakukan hal tersebut (because i use Emacs), tekan kombinasi Ctrl+Alt+Shift+% pada keyboard, setelah itu minibuffer akan aktif ketikkan kata berikut
\(class="kolom\) satu
kemudian tekan Enter dan ketik kata penggantinya (dalam hal ini kosong) kemudian tekan Enter lagi.
Secara otomatis warna teks yang sesuai dengan karakter Regexp yang kita masukkan akan berbeda dengan yang lainnya, untuk melanjutkan penggantian tekan tombol y, atau !(tanda seru) untuk mengganti semua karakter tanpa konfirmasi.


Regexp dengan Emacs

Ternyata ketika saya coba editor Vim, ternyata regexp yang digunakan tidak berbeda, hanya berbeda untuk pemanggilan dan penanganan ketika karaker ditemukan ada, jika pada Emacs otomatis akan ada konfirmasi untuk mengganti teks tersebut atau tidak sedangkan Vim secara default mengganti semua teks, kecuali ditambahkan modifier c setelah Regexp nya.
Vim regexp tanpa konfirmasi
:%s/\(class="kolom\) satu/kosong/g
Vim regexp dengan konfirmasi
:%s/\(class="kolom\) satu/kosong/gc

Format Regexp Vim sendiri sesuai dengan kebanyakan Regexp dalam pemrograman umumnya yaitu diawali dengan sebuah pembatas (biasanya dengan slash(/)) kemudian karakter regexp nya tambah dengan pembatas lagi (harus sama dengan pembatas yang digunakan diawal), kemudian kata penggantinya, sebuah pembatas lagi sebagai penutup baru kemudian modifier
Format Regexp :
/Regexp/pengganti/modifier

Pada contoh dengan Vim diatas karakter pertama adalah standar dari Vim
  • :
    untuk mengaktifkan command mode ( minibuffer kalo di Emacs)
  • %
    artinya buffer(file) yang sedang aktif
  • s
    pencarian dan penggantian teks

Sedangkan modifier g dan c diatas berarti global dan confirmation

Tulis Komentar dengan akun Facebook Anda.

0 comments:

Post a Comment