Beranda » bagaimana » Cara Menggunakan Ekspresi Reguler Dasar untuk Mencari yang Lebih Baik dan Hemat Waktu

    Cara Menggunakan Ekspresi Reguler Dasar untuk Mencari yang Lebih Baik dan Hemat Waktu

    Apakah Anda telah mencari dengan Grep atau mencari program yang dapat mengubah nama file untuk Anda, Anda mungkin bertanya-tanya apakah ada cara yang lebih mudah untuk menyelesaikan pekerjaan Anda. Untungnya, ada, dan itu disebut "ekspresi reguler."

    (Komik dari XKCD.com)

    Apa itu Ekspresi Reguler?

    Ekspresi reguler adalah pernyataan yang diformat dengan cara yang sangat spesifik dan dapat mewakili banyak hasil yang berbeda. Juga dikenal sebagai "regex" atau "regexp," mereka terutama digunakan dalam fungsi pencarian dan penamaan file. Satu regex dapat digunakan seperti rumus untuk membuat sejumlah kemungkinan keluaran yang berbeda, yang semuanya dicari. Atau, Anda dapat menentukan bagaimana sekelompok file harus dinamai dengan menentukan regex, dan perangkat lunak Anda secara bertahap dapat pindah ke output yang diinginkan berikutnya. Dengan cara ini, Anda dapat mengganti nama banyak file dalam banyak folder dengan sangat mudah dan efisien, dan Anda dapat bergerak melampaui batasan sistem penomoran yang sederhana..

    Karena penggunaan ekspresi reguler bergantung pada sintaks khusus, program Anda harus mampu membaca dan menguraikannya. Banyak program pengubahan nama file batch untuk Windows dan OS X memiliki dukungan untuk regexps, serta alat pencarian lintas-platform GREP (yang kami sentuh di dalam Bash Scripting for Beginners Guide) dan alat baris perintah Awk untuk * Nix. Selain itu, banyak pengelola file alternatif, peluncur, dan alat pencarian menggunakannya, dan mereka memiliki tempat yang sangat penting dalam bahasa pemrograman seperti Perl dan Ruby. Lingkungan pengembangan lainnya seperti .NET, Java, dan Python, serta C ++ 11 yang akan datang, semua menyediakan pustaka standar untuk menggunakan ekspresi reguler. Seperti yang dapat Anda bayangkan, mereka bisa sangat berguna ketika mencoba untuk meminimalkan jumlah kode yang Anda masukkan ke dalam suatu program.

    Catatan Tentang Melarikan Karakter

    Sebelum kami menunjukkan kepada Anda dengan contoh, kami ingin menunjukkan sesuatu. Kami akan menggunakan bash shell dan perintah grep untuk menunjukkan kepada Anda bagaimana menerapkan ekspresi reguler. Masalahnya adalah bahwa kadang-kadang kita ingin menggunakan karakter khusus yang perlu diteruskan ke grep, dan bash shell akan menafsirkan karakter itu karena shell juga menggunakannya. Dalam keadaan ini, kita perlu "melarikan diri" karakter ini. Ini bisa membingungkan karena "pelarian" karakter ini juga terjadi di dalam regexps. Misalnya, jika kita ingin memasukkan ini ke grep:

    \<

    kita harus menggantinya dengan:

    \\\<

    Setiap karakter khusus di sini mendapat satu garis miring terbalik. Atau, Anda juga dapat menggunakan kutipan tunggal:

    '\<'

    Kutipan tunggal memberitahu bash TIDAK untuk menafsirkan apa yang ada di dalamnya. Meskipun kami memerlukan langkah-langkah ini untuk diambil sehingga kami dapat menunjukkannya kepada Anda, program Anda (terutama yang berbasis GUI) seringkali tidak memerlukan langkah-langkah tambahan ini. Untuk menjaga hal-hal sederhana dan mudah, ekspresi reguler aktual akan diberikan kepada Anda sebagai teks yang dikutip, dan Anda akan melihat sintaks lolos di screenshot baris perintah.

    Bagaimana Mereka Mengembang?

    Regexps adalah cara yang sangat ringkas untuk menyatakan istilah sehingga komputer Anda dapat mengembangkannya menjadi beberapa opsi. Mari kita lihat contoh berikut:

    tom [0123456789]

    Kurung kotak - [dan] - memberi tahu mesin parsing bahwa apa pun yang ada di dalamnya, SATU karakter apa pun dapat digunakan untuk mencocokkan. Apa pun yang ada di dalam tanda kurung itu disebut set karakter.

    Jadi, jika kami memiliki daftar entri yang sangat banyak dan kami menggunakan regex ini untuk mencari, istilah berikut akan cocok:

    • tom
    • tom0
    • tom1
    • tom2
    • tom3

    dan seterusnya. Namun, daftar berikut ini TIDAK akan cocok, dan begitu juga TIDAK akan muncul di hasil Anda:

    • tomat ; regex tidak memperhitungkan surat apa pun setelah "tom"
    • Tom; regex peka terhadap huruf besar-kecil!

    Anda juga dapat memilih untuk mencari dengan tanda titik (.) Yang memungkinkan setiap karakter hadir, selama ada karakter yang hadir.

    Seperti yang Anda lihat, bergulat dengan

    .tom

    tidak memunculkan istilah yang hanya memiliki "tom" di awal. Bahkan "tomat hijau" masuk, karena ruang sebelum "tom" dianggap sebagai karakter, tetapi istilah seperti "tomF" tidak memiliki karakter di awal dan dengan demikian diabaikan.

    Catatan: Perilaku default Grep adalah mengembalikan seluruh baris teks ketika beberapa bagian cocok dengan regex Anda. Program lain mungkin tidak melakukan ini, dan Anda dapat mematikan ini di grep dengan bendera '-o'.

    Anda juga dapat menentukan pergantian menggunakan pipa (|), seperti di sini:

    spesialisasi (s | z) e

    Ini akan menemukan keduanya:

    • mengkhususkan
    • mengkhususkan

    Saat menggunakan perintah grep, kita perlu keluar dari karakter khusus (, |, dan) dengan garis miring terbalik serta menggunakan bendera '-E' untuk membuatnya berfungsi dan menghindari kesalahan jelek.

    Seperti yang kami sebutkan di atas, ini karena kami perlu memberi tahu bash shell untuk meneruskan karakter-karakter ini ke grep dan tidak melakukan apa pun dengan mereka. Bendera '-E' memberi tahu grep untuk menggunakan tanda kurung dan pipa sebagai karakter khusus.

    Anda dapat mencari dengan pengecualian menggunakan tanda sisipan yang ada di dalam tanda kurung siku Anda dan di awal set:

    tom [^ F | 0-9]

    Sekali lagi, jika Anda menggunakan grep dan bash, ingatlah untuk menghindari pipa itu!

    Persyaratan yang ada dalam daftar tetapi TIDAK muncul adalah:

    • tom0
    • Tom5
    • Tom9
    • tomF

    Ini tidak cocok dengan regex kami.

    Bagaimana Saya Dapat Menggunakan Lingkungan?

    Seringkali, kami mencari berdasarkan batas. Terkadang kita hanya menginginkan string yang muncul di awal kata, di akhir kata, atau di akhir baris kode. Ini dapat dengan mudah dilakukan dengan menggunakan apa yang kita sebut jangkar.

    Menggunakan tanda sisipan (di luar tanda kurung) memungkinkan Anda menentukan "awal" suatu garis.

    ^ tom

    Untuk mencari akhir baris, gunakan tanda dolar.

    tom $

    Anda dapat melihat bahwa string pencarian kami datang SEBELUM jangkar dalam kasus ini.

    Anda juga bisa untuk kecocokan yang muncul di awal atau akhir kata, bukan seluruh baris.

    \

    tom \>

    Seperti yang kami sebutkan dalam catatan di awal artikel ini, kami harus keluar dari karakter khusus ini karena kami menggunakan bash. Atau, Anda juga dapat menggunakan kutipan tunggal:

    Hasilnya sama. Pastikan Anda menggunakan tanda kutip tunggal, dan bukan tanda kutip ganda.

    Sumber Daya Lain Untuk Regexps Tingkat Lanjut

    Kami baru saja mencapai ujung gunung es di sini. Anda juga dapat mencari istilah uang yang digambarkan oleh penanda mata uang, dan mencari salah satu dari tiga atau lebih istilah yang cocok. Segalanya bisa menjadi sangat rumit. Jika Anda tertarik untuk mempelajari lebih lanjut tentang ekspresi reguler, silakan lihat sumber-sumber berikut.

    • Zytrax.com memiliki beberapa halaman dengan contoh-contoh spesifik mengapa hal-hal dilakukan dan tidak cocok.
    • Regular-Expressions.info juga memiliki panduan pembunuh untuk banyak hal yang lebih canggih, serta halaman referensi yang berguna.
    • Gnu.org memiliki halaman yang didedikasikan untuk menggunakan regexps dengan grep.

    Anda juga dapat membuat dan menguji ekspresi reguler Anda menggunakan alat daring berbasis Flash gratis yang disebut RegExr. Ini berfungsi saat Anda mengetik, gratis, dan dapat digunakan di sebagian besar browser.


    Apakah Anda memiliki penggunaan favorit untuk ekspresi reguler? Tahu penemu batch hebat yang menggunakannya? Mungkin Anda hanya ingin membual tentang grep-fu Anda. Kontribusikan pemikiran Anda dengan berkomentar!