Saya tidak bertanya di mana harus belajar. Saya telah menemukan banyak sumber daya online, dan buku, dll.
Tapi bagaimana cara saya mengatasinya. Di mana awal itu, akhirnya? Kapan prosesor regexp maju pada teks, kapan prosesor bertahan dan mencoba kecocokan lainnya? dll.
Saya merasa ingin mencoba mencari hieroglif pada piramida Mesir.
learning
regular-expressions
dumbBoy
sumber
sumber
Jawaban:
Saya pikir pengetahuan teori Automata sangat penting untuk dipahami.
Setelah Anda memahami apa yang dimaksud dengan otomat, dan bagaimana bahasa reguler didefinisikan, memahami ekspresi reguler akan jauh lebih mudah.
Mengenai sintaks khusus dan perbedaan antara berbagai implementasi ... Ya, beberapa hal yang harus Anda ingat. Ada alat bantu untuk itu juga.
Sunting
Beberapa komentar di bawah ini mengangkat poin penting:
Jangan lupa bahwa ekspresi reguler (seperti yang diterapkan dalam sebagian besar bahasa pemrograman) adalah superset dari ekspresi reguler dalam teori automata. Meskipun latar belakang teoretis yang baik adalah tempat yang berguna untuk memulai, itu tidak akan memberi tahu Anda segalanya. (Terima kasih, David Thornley)
Banyak komentator mengatakan bahwa adalah mungkin untuk mempelajari berbagai sintaks regex tanpa mempelajari dasar teoretis. Meskipun benar bahwa Anda dapat mempelajari sintaksis tanpa sepenuhnya memahami cara kerjanya, kesan saya bahwa pemahaman penuh adalah apa yang diinginkan OP. Pertanyaannya adalah tentang dasar yang sebenarnya: kapan prosesor maju? Kapan itu berhenti? Bagaimana memutuskan bahwa itu cocok? Itulah dasarnya, itulah teorinya, dan didasarkan pada Teori Automata. Tentu, Anda bisa mengendarai mobil tanpa tahu bagaimana mesin bekerja. Tetapi jika Anda ditanya "bagaimana gas itu benar-benar menggerakkannya" - Anda harus berbicara tentang bagaimana mesin dibuat, bukan?
sumber
Dengan berlatih.
Saya belajar dengan bersenang-senang dengan memo web. Saya yakin saya tidak sendirian melakukan itu hanya untuk bersenang-senang.
Satu contoh: Tulis beberapa kode yang mengambil sepak bola terbaru, tenis (olahraga yang Anda sukai sebenarnya) mendapat skor dari situs web olahraga favorit Anda. Lakukan dengan menulis beberapa kode untuk memuat halaman, ekstrak skor dengan ekspresi reguler dan output ke konsol atau ke beberapa file teks. Pastikan bahwa dengan ekspresi reguler yang Anda pilih, Anda hanya mengambil skor, dan tidak ada yang lain. Kadang-kadang ini bisa sangat menantang :-)
Contoh kedua: Tulis beberapa kode yang mengambil gambar webcomic favorit Anda, (saya suka Sinfest misalnya) dan menyimpannya di suatu tempat di hard drive Anda. Gunakan hanya ekspresi reguler untuk mengambil tag "img" dan kontennya. Opsional juga mengambil judulnya jika disimpan di suatu tempat.
sumber
Saya tahu Anda tidak meminta sumber daya tetapi Menguasai Ekspresi Reguler oleh Jeffrey EF Friedl adalah bagaimana saya belajar cara kerjanya dan bagaimana menggunakannya. Bahkan setelah sampai pada titik menggunakan banyak dari mereka untuk mengurai hal-hal yang berbeda, bab pertama memiliki hal-hal baru untuk saya.
Anda ingin memahami regexp sialan itu? Baca buku ini.
sumber
Saya akan mulai dengan menjelaskan tujuan Anda dan kemudian mencari tahu gaya belajar Anda .
Apa yang mengejutkan saya tentang pertanyaan Anda adalah Anda bertanya "bagaimana cara belajar ekspresi reguler?" dan kemudian segera ikuti itu dengan pertanyaan "bagaimana cara kerja mesin ekspresi reguler secara internal?" Anda tampaknya menyiratkan bahwa kedua hal itu ada hubungannya dengan satu sama lain, yang merupakan poin penting. Mungkin Anda adalah orang yang mempelajari cara kerja sesuatu dengan memisahkannya, atau dengan membangunnya sendiri.
Untuk aplikasi pemula, biasanya tidak perlu memahami cara kerja alat untuk menggunakannya secara efektif. Anda tidak perlu tahu bagaimana motor bor bekerja untuk melubangi kayu; Anda perlu memahami cara menggunakan bor, bukan cara membuat bor.
Jadi, apa tujuan Anda? Apakah Anda bermaksud mempelajari cara membuat mesin ekspresi reguler? atau apakah Anda bermaksud mempelajari cara efektif menggunakan ekspresi reguler untuk menyelesaikan masalah bisnis? Mencapai tujuan yang berbeda tersebut kemungkinan membutuhkan teknik pembelajaran yang berbeda.
Untuk menjawab pertanyaan spesifik Anda tentang cara kerja mesin ekspresi reguler: itu tergantung. Pendekatan teoritis "klasik" untuk ekspresi reguler adalah dengan menggunakan ekspresi reguler sebagai cetak biru untuk otomat terbatas nondeterministik, kemudian membangun otomat terbatas hingga deterministik yang setara, dan kemudian jalankan otomat itu terhadap input.
Hampir tidak ada yang benar-benar melakukan ini karena beberapa alasan. Pertama, jumlah negara dikalikan dengan jumlah karakter input yang mungkin menghasilkan tabel transisi keadaan yang sangat besar bahkan untuk ekspresi reguler kecil. Tentu, sebagian besar bisa dikompresi, tapi tetap saja, itu banyak aturan transisi. Kedua, pendekatan lain biasanya lebih cepat. Ketiga, apa yang disebut ekspresi "reguler" ada di perpustakaan regexp modern, tidak seperti itu. Mereka bukan bahasa biasa sama sekali; mereka sering dikenali oleh pushdown automata, bukan bahasa automata terbatas.
(Saya mulai menulis seri panjang tentang bagaimana semua ini bekerja tetapi saya kehabisan tenaga setelah hanya dua belas artikel pertama . Anda mungkin menemukan mereka menarik jika Anda ingin primer singkat tentang latar belakang teoritis dari ekspresi reguler dasar.)
Mesin ekspresi reguler yang sebenarnya biasanya menggunakan strategi backtracking. Mesin ekspresi reguler yang kami buat untuk mesin JScript lebih dari satu dekade yang lalu sekarang mengkompilasi ekspresi reguler menjadi bahasa bytecode yang mencakup primitif untuk mengenali urutan dan mundur ke keadaan sebelumnya. Kami kemudian membangun sebuah interpreter untuk bahasa bytecode itu.
Saya tidak akan mencoba memahami bagaimana mesin regexp bekerja sebelum memiliki pemahaman yang cukup kuat tentang bagaimana menggunakan ekspresi reguler. Berkonsentrasilah pada hal itu sebelum Anda mulai menggali berbagai strategi optimasi berbagai mesin.
sumber
"[0-9]{3}"
yang dapat cocok dengan angka tiga digit, dan tiga digit angka 480 adalah contoh untuk regular ekspresi yang cocok.Suka hal baru apa pun:
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:
Contoh itu menyebalkan karena tidak akan pernah melakukan apa pun
Jauh lebih baik; sekarang, kita tidak benar-benar tahu sebelumnya apakah sesuatu akan dilakukan atau tidak. Kami sekarang dapat mulai menerima input pengguna:
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 mengetikBRA
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 cocoksomething == 'color'
? Sekarang Anda harus mencocokkansomething == 'color' || somthing == 'colour'
.Singkatnya, pola-pola sederhana berubah menjadi banyak kode berulang sangat cepat.
Contoh warna dapat dengan mudah dicocokkan dengan:
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:
Dimulai dengan sesuatu yang sederhana seperti:
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.sumber
Brian Kernighan menulis prosesor reg-ex sederhana dalam buku Kode Indah . Saya menyadari Anda tidak mencari sumber daya, tetapi mungkin membantu untuk melihat implementasi dasar , di dalam.
sumber
Dalam perkembangan normal, kode debug dapat memberikan wawasan yang sangat berguna. Ekspresi reguler tidak berbeda. Jadi, dengan risiko terdengar seperti iklan, dapatkan RegexBuddy . Ini memiliki alat yang hebat untuk menampilkan secara visual apa yang dilakukan mesin saat menangani ekspresi Anda dan input string.
sumber
Ekspresi reguler bisa menjadi sangat rumit dengan sangat cepat, jadi saya sarankan Anda mulai mempelajarinya menggunakan tutorial. Ketahuilah bahwa bentuk ekspresi reguler yang paling sederhana adalah string yang mewakili apa yang Anda cari. Sayangnya, untuk dapat menetapkan aturan pencarian khusus, diperlukan karakter tertentu, dan karakter ini harus diloloskan atau Anda akan membuat ekspresi reguler yang tidak benar atau salah.
Saran saya adalah mulai dengan contoh dari sesuatu yang Anda cari dan hindari. Jadi dengan kata lain, jika Anda mencari apa pun di dalam tanda kurung, ambil contoh satu string seperti itu dalam teks yang Anda cari:
(this is an example of something you'd want to find)
Mulailah dengan melarikan diri karakter sehingga Anda mencari karakter literal:
\(this is an example of something you'd want to find\)
Uji, verifikasi bahwa ia menemukan contoh Anda dengan benar. Kemudian generalisasikan ekspresi untuk menemukan teks seperti itu, bukan hanya contoh yang Anda temukan. Maka itu akan menjadi:
\([^)]*\)
(berarti karakter apa pun yang bukan ")" untuk sejumlah kejadian, termasuk 0).Uji lagi, dan verifikasi bahwa itu tidak hanya menemukan contoh Anda, tetapi orang lain menyukainya. Cari ekspresi reguler yang lebih rumit tetapi lebih sering di internet dan tambal dengan ekspresi reguler yang ada untuk menghindari kekhawatiran tentang setiap kemungkinan.
Itu saja. Dan oh, belajar dan cinta \ Q ... \ E. Dalam sebagian besar bahasa ekspresi reguler, \ Q menunjukkan awal dari pola literal dan \ E menandai akhirnya, jika Anda harus berurusan dengan pencarian pola yang sangat canggih dan tidak tahu bagaimana cara menghindarinya. Itu menyelamatkan hidup saya lebih dari beberapa kali.
sumber
Saya akan memberi Anda jawaban sederhana untuk pertanyaan sederhana. Pertama, Anda perlu memahami apa itu Regular Expressions (RegEx) - apa yang mereka lakukan, untuk apa mereka digunakan. Kemudian, alat yang bagus untuk memulai.
Apa itu? RegEx adalah bahasa untuk mengekspresikan pencocokan pola. Dengan kata lain, menggunakannya, Anda dapat membuat kombinasi karakter yang mengenali, atau menemukan, pola dalam teks. Bagaimana ini berguna? Dalam pemrograman, Anda dapat memberitahu komputer untuk mencocokkan teks dari beberapa sumber (input pengguna, halaman web, dll.) Dan mendeteksi apakah patters teks tertentu terkandung di dalamnya. Misalnya, tanda titik (.) Menunjukkan karakter - huruf atau angka. Angka dalam kurung mewakili angka iterasi, jadi ". {1,30}" menunjukkan karakter apa saja, diulang antara 1 dan 30 kali - dengan kata lain, Anda tidak dapat memiliki string kosong, dan tidak boleh lebih dari 30 karakter. Dan itu berlanjut dari sana.
Bagaimana cara memulai belajar? Alat terbaik mutlak yang saya lihat adalah Expresso , tetapi hanya untuk Windows. Ini memiliki GUI yang sangat luas di mana Anda mengklik elemen yang ingin Anda tambahkan ke ekspresi Anda, kemudian tester untuk memeriksanya terhadap berbagai input untuk melihat hasilnya. Saya belum melihat sesuatu yang bagus di Mac (tapi saya menjalankan Windows di VMWare, jadi tidak benar-benar membutuhkan versi Mac), belum menghabiskan banyak waktu mencari di Linux.
sumber
Selain referensi yang baik, cara Anda benar - benar belajar adalah dengan menggunakan alat belajar yang baik. Salah satunya menggunakan editor Vim open-source , dengan dua opsi yang ditetapkan:
Yang lainnya adalah dengan menggunakan alat panggilan gratis RegExCoach . Anda menempelkan teks yang ingin Anda cari, lalu di jendela lain Anda mengembangkan ekspresi reguler Anda. Seperti Vim, ini menyoroti pertandingan yang sukses dengan cepat.
sumber
Anda mulai dengan perbandingan string dasar. Sangat mudah, tetapi juga tidak sekuat itu.
Selanjutnya, mungkin terjadi pada Anda, bahwa Anda memerlukan perbandingan inesitif kasus, sehingga "Yunani" dan "GreeK" sama. Ini sedikit lebih kuat.
Suatu hari Anda melihat perbedaan kecil dalam pengejaan seharusnya tidak mencegah 2 kata dari membandingkan sama: yaitu "mengatur" dan "mengatur" harus membandingkan sama. Anda duduk dan menulis beberapa kode yang melakukan ini dan Anda senang.
Sampai Anda sedikit lebih abstrak dan sadari bahwa Anda terkadang ingin semua kata yang berakhiran "ize" dibandingkan dengan saudara mereka dalam ejaan bahasa Inggris. Atau, pengulangan beberapa string beberapa kali. Dan, tentu saja, Anda perlu menggabungkan semua itu.
Dan seterusnya. Akhirnya, Anda kemungkinan besar berakhir dengan beberapa notasi di mana tidak setiap karakter mewakili dirinya sendiri. Tidak ada yang lain adalah regexp. Orang dapat melihatnya sebagai deskripsi dari serangkaian string.
Dan kemudian, itu cukup mudah dan sampai pada 3 prinsip dasar berikut:
Anda memiliki regexps dasar: karakter yang berdiri sendiri, kelas karakter, singkatan praktis dan tidak begitu berguna untuk kelas karakter seperti \ d atau \ p {Lu} untuk huruf besar.
Dan kemudian, Anda memiliki beberapa kemungkinan untuk menggabungkannya: jika r1 dan r2 adalah regexps, maka begitu pula r1r2 r1 | r2 (r1).
Terakhir, namun tidak sedikit pengubah pengulangan: r? r * r + r {n, m}
Ini yang paling perlu Anda ketahui. Ada lagi yang bisa Anda cari ketika Anda membutuhkannya.
sumber
Dua jawaban lain yang baik memberitahu Anda untuk mempelajari teori di balik regex, dan untuk berlatih, yang keduanya merupakan saran bagus. Saya juga merekomendasikan mendapatkan alat regex visual yang baik untuk membantu Anda jika Anda serius.
RegexBuddy , misalnya, memiliki mode debug visual yang memungkinkan Anda melangkah melalui eksekusi regex, dan menunjukkan kepada Anda melalui highlight dan teks penjelasan apa yang dilakukan mesin regex pada setiap langkah. Ada video yang menunjukkan debugging ini di situs mereka.
sumber
Segala yang kami dapat berikan kepada Anda adalah lebih banyak sumber untuk dipelajari. Pertanyaan ini sendiri merupakan sumber.
Ngomong-ngomong, saya telah belajar ekspresi reguler dengan cukup mudah dari situs ini: http://www.regular-expressions.info/
sumber
Bagi saya, melihat apa yang cocok dengan regexp saat saya membangunnya benar-benar membantu membuat hidup saya lebih mudah dan telah membantu saya lebih memahami mereka.
Untuk melakukan ini, saya akan membuka file dengan teks target di Emacs, dan kemudian menggunakan
isearch-forward-regexp
perintah. Saat Anda memasukkan regexp, Emacs menunjukkan kepada Anda apa yang cocok (itulah bagian "pencarian").Untuk menjalankan perintah, di Emacs, Anda dapat menggunakan
<ESC>xisearch-forward-regexp
.sumber
Saya belajar ekspresi reguler dengan mempelajari flex dan bison, yang digunakan untuk membangun analisis leksikal dan parser. Anda tidak dapat memiliki pengurai tanpa ekspresi reguler, dan buku lexx dan yacc sangat pandai berjalan melalui teori tanpa bergerak terlalu cepat.
Pada dasarnya, hampir semua mesin regex akhir-akhir ini mengikuti prinsip yang sama. Mereka semua mesin negara hingga dan jika Anda benar-benar grok itu, maka Anda memiliki kaki di hampir semua kode yang Anda tulis. Ini mirip dengan mempelajari rekursi dalam hal itu, begitu Anda mendapatkannya, Anda menerapkannya pada masalah secara naluriah. Mereka mudah diselesaikan dengan alat yang tepat, tetapi sangat sulit tanpanya.
Hal lain tentang belajar lexx dan yacc, dibandingkan dengan ekspresi reguler, adalah Anda belajar bagaimana mereka bekerja secara internal. Bagaimana program melihat ke depan, mengapa ia menyelesaikan pertandingan, bagaimana ia menyimpan data, dan banyak lagi. Memahami petunjuk adalah mutlak harus, tetapi jika Anda mendapatkan lexx dan yacc, dan menjalaninya dari awal Anda akan mempelajari semua yang Anda minta, dan memiliki alat yang sangat kuat untuk sisa karir Anda.
Pertanyaan ini mencakup banyak sumber untuk belajar, dan kerangka fleksibel yang saya lempar bersama.
sumber
Lagi, saya pertama kali mencoba memastikan tidak ada cara yang lebih mudah untuk menyelesaikan masalah / "tokenize" string.
Ketika Anda tidak dapat menemukan satu, saya melihatnya sebagai masalah bukan dari mencoba untuk mencocokkan apa yang Anda inginkan dari string, melainkan, masalah TIDAK cocok dengan apa yang tidak Anda inginkan. Ini sebagian besar karena regex serakah. Tetapi itu telah membantu saya dengan baik sebagai pendekatan untuk mendapatkan apa yang saya inginkan.
Ini sebuah contoh:
untuk mencocokkan menit:
Alih-alih mencoba menemukan waktu bersama dengan yang lain, cobalah untuk menemukan batasan yang berbeda.
Contohnya sedikit dibuat-buat, tapi semua yang bisa saya pikirkan.
sumber
Salah satu pendekatan yang saya gunakan adalah menemukan banyak proyek open source yang membutuhkan pembaruan sintaksis dan kemudian menulis skrip sed yang semakin kompleks, yang terdiri dari banyak ekspresi reguler.
Skrip diperlukan untuk menjalankan berbagai file berbeda di setiap proyek open source. Kemudian jalankan melawan berbagai proyek dengan gaya yang berbeda. Saya mulai dengan sesuatu yang sangat sederhana seperti
%s/before/after
saat itu saya menemukan bahwa itu cocok dengan banyak kasus. jadi saya menambahkan lebih banyak barang untuk mencegahnya. Kemudian saya menemukan proyek yang berbeda menggunakan gaya sintaks yang berbeda yang membutuhkan perubahan berbeda.Pada akhirnya saya berakhir dengan
dan dibantu dalam pendekatan ini oleh kebutuhan untuk
Saya juga akan menyampaikan bahwa ada banyak situs untuk berbagai bahasa - ruby, javascript, dll. Yang memungkinkan Anda bermain-main dengan ekspresi dan contoh teks untuk kepuasan segera. Ini adalah:
regex dalam berbagai bahasa di satu situs
fokus pada grup pertandingan:
sumber
Saya telah menemukan belajar ekspresi reguler yang mirip dengan mempelajari tabel perkalian - ya, Anda perlu memahami ide di baliknya, tetapi pada akhirnya, Anda hanya perlu melakukannya berulang kali dan berulang kali.
Ketika saya belajar, saya akan menetapkan tujuan melakukan beberapa latihan regex per hari. Dalam praktiknya, ini berarti setidaknya sekali sehari, saya akan mencoba untuk melihat string atau teks di layar saya, dan muncul dengan tantangan - "bisakah saya mendapatkan semua alamat email dari sini", atau "temukan semua kemunculan kata 'kode' digunakan sebagai kata kerja dan bukan kata benda, "hal-hal seperti itu.
Melakukan itu selama beberapa minggu benar-benar membuahkan hasil - dan tentu saja, ulasan berkala dan penyegar diperlukan. Saya hampir waktunya untuk satu.
Saya menemukan alat online ini juga membantu, karena mari saya uji regex secara real time: http://www.gethifi.com/tools/regex
sumber