29Jun

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

click fraud protection

Apakah Anda telah mencari dengan Grep atau melihat program yang dapat mengubah nama file batch 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 Regular Expressions?

Ekspresi reguler adalah pernyataan yang diformat dengan cara yang sangat spesifik dan dapat bertahan untuk berbagai hasil yang berbeda. Juga dikenal sebagai "regex" atau "regexp," mereka terutama digunakan dalam fungsi penamaan pencarian dan file. Satu regex dapat digunakan seperti formula untuk membuat sejumlah keluaran yang berbeda, yang semuanya dicari. Sebagai alternatif, Anda dapat menentukan bagaimana sekelompok file harus diberi nama dengan menentukan regex, dan perangkat lunak Anda dapat secara bertahap beralih ke keluaran yang diinginkan berikutnya. Dengan cara ini, Anda dapat mengganti beberapa file dalam beberapa folder dengan sangat mudah dan efisien, dan Anda dapat beralih melampaui batasan sistem penomoran sederhana.

instagram viewer

Karena penggunaan ekspresi reguler bergantung pada sintaks khusus, program Anda harus mampu membaca dan menguraikannya. Banyak program penggantian nama file batch untuk Windows dan OS X memiliki dukungan untuk regexps, serta tool pencarian cross-platform GREP( yang kami sentuh dalam Panduan Bash Scripting for Beginners) dan tool baris perintah Awk untuk * Nix. Selain itu, banyak manajer 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, and Python, serta C ++ 11 yang akan datang, semuanya menyediakan perpustakaan standar untuk menggunakan ekspresi reguler. Seperti yang dapat Anda bayangkan, mereka bisa sangat berguna saat mencoba meminimalkan jumlah kode yang Anda masukkan ke dalam sebuah program.

Catatan tentang Melarikan Diri Karakter

Sebelum memberi contoh, kami ingin menunjukkan sesuatu. Kami akan menggunakan shell bash dan perintah grep untuk menunjukkan cara menerapkan ekspresi reguler. Masalahnya adalah terkadang kita ingin menggunakan karakter khusus yang perlu dilewatkan ke grep, dan shell bash akan menafsirkan karakter itu karena shell menggunakannya juga. Dalam keadaan seperti ini, kita perlu "melarikan diri" karakter ini. Hal ini bisa membingungkan karena "escape" karakter ini juga terjadi di dalam regexps. Misalnya, jika kita ingin memasukkan ini ke grep:

\ & lt;

kita harus mengganti dengan:

\\\ & lt;

Setiap karakter khusus di sini mendapatkan satu garis miring terbalik. Sebagai alternatif, Anda juga dapat menggunakan tanda kutip tunggal:

'\ & lt;'

Kutipan tunggal memberi tahu bash TIDAK untuk menafsirkan apa yang ada di dalamnya. Meskipun kami memerlukan langkah-langkah ini untuk diambil agar kami dapat menunjukkannya kepada Anda, program Anda( terutama yang berbasis GUI) seringkali tidak memerlukan langkah ekstra ini. Untuk menjaga agar tetap sederhana dan mudah, ekspresi reguler yang sebenarnya akan diberikan kepada Anda seperti teks kutipan, dan Anda akan melihat sintaks yang lolos pada tangkapan layar baris perintah.

Bagaimana Mereka Memperluas?

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

tom [0123456789]

Tanda kurung siku - [dan] - katakan pada mesin pengurai bahwa apapun yang ada di dalamnya, satu karakter pun dapat digunakan untuk mencocokkan. Apapun yang ada dalam kurung tersebut disebut character set.

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

  • tom1
  • tom2
  • tom3

dan seterusnya. Namun, daftar berikut TIDAK akan cocok, dan TIDAK akan muncul dalam hasil Anda: tomat

  • ;regex tidak memperhitungkan huruf setelah "tom"
  • Tom;regex itu case sensitive!

Anda juga dapat memilih untuk mencari dengan jangka waktu( .) Yang memungkinkan karakter apapun hadir, selama ada karakter yang hadir.

Seperti yang bisa Anda lihat, grepping dengan

.

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

Catatan: Perilaku default Grep adalah mengembalikan keseluruhan baris teks saat beberapa bagian sesuai dengan regex Anda. Program lain mungkin tidak melakukan ini, dan Anda dapat mematikannya dengan grep dengan bendera '-o'.

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

speciali( s | z) e

Ini akan menemukan keduanya:

  • mengkhususkan
  • mengkhususkan

Saat menggunakan perintah grep, kita perlu melepaskan diri dari karakter khusus( ,|, dan) dengan garis miring terbalik serta memanfaatkan bendera '-E' agar bisa bekerja dan menghindari kesalahan yang buruk. Seperti yang telah kami sebutkan di atas, ini karena kita perlu memberitahu shell bash untuk meneruskan karakter ini ke grep dan tidak melakukan apapun dengan mereka. Flag '-E' memberitahu grep untuk menggunakan tanda kurung dan pipa sebagai karakter khusus.

Anda dapat mencari dengan pengecualian menggunakan tanda sisipan yang ada di dalam kurung persegi Anda dan pada awal rangkaian:

tom [^ F | 0-9]

Sekali lagi, jika Anda menggunakan grep dan bash, ingatlah untuk melepaskan diripipa itu! Persyaratan

yang ada di daftar tapi TIDAK muncul adalah:

  • tom0
  • tom5
  • tom9
  • tomF

Ini tidak sesuai dengan regex kami.

Bagaimana Saya Menggunakan Lingkungan?

Seringkali, kita mencari berdasarkan batas-batas. Terkadang kita hanya menginginkan string yang muncul di awal sebuah kata, di akhir kata, atau di akhir baris kode. Hal ini bisa dengan mudah dilakukan dengan menggunakan apa yang kita sebut jangkar.

Menggunakan tanda sisir( di luar tanda kurung) memungkinkan Anda untuk menunjuk "awal" sebuah garis. Untuk mencari akhir baris, gunakan tanda dolar.

tom $

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

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

\ & lt; tom

tom \ & gt;

Seperti yang telah kami sebutkan di catatan di awal artikel ini, kita perlu melepaskan diri dari karakter spesial ini karena kita menggunakan bash. Sebagai alternatif, Anda juga bisa menggunakan tanda kutip tunggal:

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

Sumber Lain Untuk Regexps

Lanjutan Kami hanya menyentuh puncak 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. Hal-hal bisa menjadi sangat rumit. Jika Anda tertarik untuk belajar lebih banyak tentang ekspresi reguler, mohon lihat sumber berikut.

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

Anda juga dapat membuat dan menguji ekspresi reguler Anda menggunakan alat online Flash berbasis bebas yang disebut RegExr. Ia bekerja saat Anda mengetik, gratis, dan bisa digunakan di sebagian besar browser.

Apakah Anda memiliki kegunaan favorit untuk ekspresi reguler? Tahu dari seorang peniru batch besar yang menggunakannya? Mungkin Anda hanya ingin membual tentang grep-fu Anda. Kontribusikan pemikiran Anda dengan berkomentar!