Kursus interaktif
Kursus Regex
Pelajari ekspresi reguler dari awal, dalam bahasa Inggris, dengan mesin yang menjalankan setiap pola langsung di browser dan menunjukkan kecocokan secara real-time.
01 · Modul 1 — Dasar-dasar
Dasar-dasar regex: pola literal, kelas karakter dasar, karakter pengganti `.` dan pelolosan karakter meta.
- 1.1Pola literalKarakter normal, sensitivitas huruf besar-kecil, dan proses pertama: kecocokan dan indeks.~8 min
- 1.2Kelas dasar: \d \w \sKelas yang telah ditentukan sebelumnya untuk angka, karakter kata, dan spasi (dan versi yang dinegasikannya).~10 min
- 1.3Karakter pengganti: titik `.`Karakter `.` cocok dengan hampir semua hal: apa yang termasuk di dalamnya, apa yang dikecualikan, dan mengapa tanda `s` penting.~8 min
- 1.4Melarikan diri dari meta-karakter12 karakter meta yang perlu di-escape dengan `\`, saat Anda memerlukan garis miring terbalik ganda dan alasannya.~10 min
02 · Modul 2 — Pengukur
Berapa banyak yang harus diulang: `*`, `+`, `?`, interval `{n,m}` dan perbedaan antara serakah dan malas.
- 2.1`*`, `+`, `?`Nol atau lebih, satu atau lebih, opsional: tiga bilangan dasar.~10 min
- 2.2Besaran pastinya `{n,m}`Tepatnya `n`, dari `n` hingga `m`, setidaknya `n`: pembilang numerik.~10 min
- 2.3Serakah vs malasSecara default, quantifier bersifat serakah (`.*`); tambahkan `?` untuk versi malas (`.*?`).~10 min
- 2.4Mundur: gambaran umumApa yang dilakukan mesin ketika pengukur serakah gagal, dan mengapa biayanya bisa mahal.~12 min
03 · Modul 3 — Jangkar dan batasan
Posisi, bukan karakter: melekat pada awal/akhir string, pada batas kata, dan pada awal/akhir setiap baris dengan tanda `m`.
- 3.1Awal dan akhir: `^` dan `$`Menambatkan pola ke karakter pertama atau terakhir dari string.~8 min
- 3.2Batasan kata: `\b` `\B`Transisi antara karakter kata dan non-kata; menemukan seluruh kata.~10 min
- 3.3Bendera `m`: multilineDengan bendera `m`, `^` dan `$` berlabuh ke awal/akhir setiap baris.~10 min
- 3.4Garis kosong dan rapikanPola yang berguna: mencocokkan baris kosong, memangkas spasi di awal/akhir baris.~10 min
04 · Modul 4 — Kelompok dan pergantian
Kelompokkan dengan `()`, pilih di antara alternatif dengan `|`, hindari pengambilan dengan `(?:...)`, beri nama grup dengan `(?<nama>...)` dan rujuk kembali ke pengambilan sebelumnya dengan referensi balik.
- 4.1Grup tangkapan: `(...)`Tanda kurung untuk mengelompokkan dan menangkap; akses grup 1, 2, 3… dalam pertandingan.~10 min
- 4.2Pergantian: `|`Pipa memilih antara dua atau lebih subpola; prioritas dan tanda kurung.~10 min
- 4.3Grup yang tidak menangkap: `(?:...)`Mengelompokkan tanpa membuat tangkapan: berguna saat Anda hanya perlu mengukur atau bergantian.~10 min
- 4.4Grup bernama dan referensi belakang`(?<nama>...)` untuk memberi nama; `\1` `\k<nama>` untuk merujuk kembali ke pengambilan.~12 min
05 · Modul 5 — Kelas karakter
Tentukan set khusus dengan `[...]`, gunakan rentang, negasikan dengan `[^...]` dan capai properti Unicode dengan `\p{...}` dan tanda `u`.
- 5.1Kumpulan karakter: `[abc]`Tanda kurung siku menentukan sekumpulan karakter yang diperbolehkan dalam satu posisi.~8 min
- 5.2Rentang di dalam kelas: `[a-z0-9]`Interval melalui tanda hubung; menggabungkan rentang dan karakter tunggal.~8 min
- 5.3Negasi: `[^...]`Kelas yang dinegasikan cocok dengan apa pun **kecuali** karakter yang terdaftar.~8 min
- 5.4Properti Unicode lolos`\p{L}`, `\p{N}`, `\p{Script=...}` dengan tanda `u`: kelas Unicode semantik.~12 min
06 · Modul 6 — Melihat-lihat
Pernyataan lebar nol: melihat ke depan atau ke belakang dalam string tanpa menggunakan karakter. Lihat ke depan `(?=)` `(?!)`, lihat ke belakang `(?<=)` `(?<!)`.
- 6.1Pandangan ke depan yang positif: `(?=...)`Periksa apakah pola tertentu mengikuti posisi saat ini, tanpa menghabiskannya.~10 min
- 6.2Pandangan ke depan negatif: `(?!...)`Periksa apakah pola tertentu TIDAK mengikuti posisi saat ini.~10 min
- 6.3Lihat ke belakang: `(?<=...)` `(?<!...)`Versi pencarian "lihat ke belakang"; Dukungan ES2018+.~12 min
- 6.4Melihat-lihat dalam praktiknyaEkstrak nilai tanpa menyertakan konteks, validasi kata sandi, parsing angka yang dibatasi.~12 min
07 · Modul 7 - Bendera, substitusi, pemisahan
Semua flag (termasuk `d`, `v`), `String.prototype.replace`/`replaceAll`/`split` dengan regex, mereferensikan `$1`/`$<name>` dalam string substitusi dan callback pengganti.
- 7.1Semua bendera secara detail`g i ms u v y d`: apa yang dilakukan masing-masing dan bagaimana kombinasinya.~12 min
- 7.2Penggantian dasar dan `$1`Ganti kecocokan dengan string tetap atau dengan referensi balik `$1` / `$<nama>`.~10 min
- 7.3Ganti dengan panggilan balikFungsi substitusi: ubah setiap kecocokan dengan kode JS arbitrer, akses ke grup.~12 min
- 7.4Pisahkan dengan regexPisahkan string pada suatu pola (CSV permisif, tokenizer minimal).~10 min
08 · Modul 8 — Latihan
Gabungkan semuanya pada masalah nyata: validasi email, parsing log, ekstrak URL/IP, tulis pola yang tahan ReDoS.
- 8.1Memvalidasi emailPola email yang "cukup baik", dengan penjelasan trade-offnya.~12 min
- 8.2Pengurai log ApacheEkstrak IP, metode, jalur, dan kode status dari baris log menggunakan grup bernama.~12 min
- 8.3Mengekstrak URL dan IPKenali URL http(s) dan alamat IPv4 dalam teks bentuk bebas.~12 min
- 8.4Menulis pola aman ReDoSKenali pola bencana (`(a+)+b`), faktorkan ulang, gunakan bilangan mirip atom.~14 min