Bagaimana cara saya mengatasinya?
Suka hal baru apa pun:
10 Study
20 Practice
30 goto 10
Belajar
Saya menemukan bahwa sebagian besar guru yang sukses mulai mengajar mata pelajaran apa pun dengan terlebih dahulu memberikan sedikit latar belakang untuk mata pelajaran tersebut. Penting untuk memiliki konteks tentang apa yang Anda pelajari dan, yang paling penting, mengapa Anda mempelajarinya.
Ini semua string yang cocok
Ekspresi Reguler adalah cara mencocokkan pola dalam teks. Ini adalah bahasa deklaratif itu sendiri yang dimasukkan ke berbagai bahasa pemrograman lainnya.
Saya ingin menekankan bahwa ini adalah bahasa deklaratif, ekspresi reguler berguna untuk mengekspresikan string mana yang cocok, tetapi mereka tidak dengan cara apa pun mengungkapkan bagaimana program harus melakukan pencocokan. Untuk alasan ini dimungkinkan untuk menggunakan ekspresi reguler dengan sangat cepat dan sangat lambat dalam bahasa pemrograman yang sama hanya dengan menggunakan parser RegEx yang berbeda.
Alasan untuk membuat ekspresi reguler adalah sama untuk pembuatan sebagian besar bahasa pemrograman: programmer menemukan diri mereka melakukan tugas rumit yang sama berulang-ulang dan memutuskan mereka menginginkan cara yang lebih sederhana untuk menulis kode.
Beberapa orang akan (dan harus) mengeluh tentang hukuman saya sebelumnya dengan mengatakan sesuatu seperti:
RegEx tidak membuat program lebih sederhana.
itu benar
RegEx tidak membuat program lebih sederhana, RegEx membuat penulisan program lebih sederhana. Anda masih harus teliti dalam pengujian Anda untuk memastikan bahwa semua kasus yang benar cocok dengan benar, dan semua kasus yang salah tidak. Sangat sulit untuk menguji "semua", dan dengan pola yang rumit, sangat sulit untuk menguji "sebagian besar". Paling buruk, Anda masih harus menguji "beberapa" kasus.
mari kita sertakan beberapa contoh. Saya telah secara wajib memilih mesin RegEx JavaScript karena saya dapat mengujinya langsung di browser dengan mudah dan karena saya tidak perlu melakukan string yang keluar saat menggunakan RegEx literal.
Ketika Anda melakukan pencocokan string normal, Anda menguji satu nilai string terhadap yang lain. Mereka dapat datang dari mana saja, tetapi pada akhirnya dibutuhkan dua string yang dibandingkan satu sama lain:
if ( 'foo' == 'bar' ) doSomething();
Contoh itu menyebalkan karena tidak akan pernah melakukan apa pun
if ( foo == 'bar' ) doSomething();
Jauh lebih baik; sekarang, kita tidak benar-benar tahu sebelumnya apakah sesuatu akan dilakukan atau tidak. Kami sekarang dapat mulai menerima input pengguna:
if ( prompt( 'Say "bar" to do something.' ) == 'bar' ) doSomething();
Luar biasa, sekarang pengguna dapat memasukkan bar
dan sesuatu akan terjadi, sampai Anda mendapatkan laporan bug dari pengguna yang mengatakan itu "bar"
tidak berfungsi, atau bahwa "BAR" tidak berfungsi, atau bahwa mereka telah mengetik BRA
100 kali dan tidak pernah terjadi apa-apa.
Mengabaikan kesalahan ejaan dan karakter tambahan 'bar' != 'BAR'
, dan programmer perlu memikirkan cara menguji di mana karakter merupakan kasus yang salah.
Solusi sederhana, gunakan toLowerCase
. Itu bekerja dengan sangat baik, tetapi bagaimana dengan pengguna kami yang menggunakan Bahasa Inggris British daripada Bahasa Inggris Amerika saat Anda cocok something == 'color'
? Sekarang Anda harus mencocokkan something == 'color' || somthing == 'colour'
.
Singkatnya, pola-pola sederhana berubah menjadi banyak kode berulang sangat cepat.
Contoh warna dapat dengan mudah dicocokkan dengan:
/colou?r/.test( something )
pemahaman yang kuat tentang dasar-dasar ekspresi reguler dapat secara signifikan mengurangi jumlah waktu yang Anda buang untuk menciptakan kembali roda.
Tempat belajar
Sebagian besar bahasa yang menerapkan ekspresi reguler memiliki setidaknya satu sumber daya yang tersedia untuk sintaks tertentu menggunakan ekspresi reguler dalam bahasa itu. Satu untuk JavaScript dapat ditemukan di MDN
membacanya.
semua itu.
lalu baca lagi.
Butuh waktu untuk belajar, menganggapnya sebagai investasi: satu jam untuk belajar RegEx sekarang menghemat satu jam saat berikutnya Anda perlu melakukan beberapa pencocokan pola string, dan kemudian satu jam lagi di waktu berikutnya setelah itu.
Praktek
Setelah membaca semua tentang RegEx, Anda mungkin tidak akan mengerti sebagian besar dari itu. Itu karena Anda sebenarnya tidak melakukan apa - apa dengannya.
Saya menyebutkan mengapa saya memilih JS untuk contoh ini, saya mendorong Anda untuk mengacaukannya di browser Anda. Ini cepat, dan Anda bisa melakukannya dengan benar di bilah URL Anda.
JS memiliki beberapa cara berbeda dan sederhana dalam menggunakan RegEx:
string.match( regex )
regex.exec( string )
regex.test( string )
Dimulai dengan sesuatu yang sederhana seperti:
javascript:'color'.match(/colou?r/);
adalah cara mudah untuk mendapatkan kaki Anda di pintu. Bermain dengannya, pecahkan apa yang cocok, dan apa yang tidak.
Ketika Anda terjebak pada latihan, teruskan 30
. Anda perlu membaca untuk belajar lebih banyak, tetapi Anda perlu berlatih untuk benar-benar memahami apa yang telah Anda pelajari.