Lompati ke konten utama

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

4 pelajaran

Dasar-dasar regex: pola literal, kelas karakter dasar, karakter pengganti `.` dan pelolosan karakter meta.

  1. 1.1Pola literalKarakter normal, sensitivitas huruf besar-kecil, dan proses pertama: kecocokan dan indeks.~8 min
  2. 1.2Kelas dasar: \d \w \sKelas yang telah ditentukan sebelumnya untuk angka, karakter kata, dan spasi (dan versi yang dinegasikannya).~10 min
  3. 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
  4. 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

4 pelajaran

Berapa banyak yang harus diulang: `*`, `+`, `?`, interval `{n,m}` dan perbedaan antara serakah dan malas.

  1. 2.1`*`, `+`, `?`Nol atau lebih, satu atau lebih, opsional: tiga bilangan dasar.~10 min
  2. 2.2Besaran pastinya `{n,m}`Tepatnya `n`, dari `n` hingga `m`, setidaknya `n`: pembilang numerik.~10 min
  3. 2.3Serakah vs malasSecara default, quantifier bersifat serakah (`.*`); tambahkan `?` untuk versi malas (`.*?`).~10 min
  4. 2.4Mundur: gambaran umumApa yang dilakukan mesin ketika pengukur serakah gagal, dan mengapa biayanya bisa mahal.~12 min

03 · Modul 3 — Jangkar dan batasan

4 pelajaran

Posisi, bukan karakter: melekat pada awal/akhir string, pada batas kata, dan pada awal/akhir setiap baris dengan tanda `m`.

  1. 3.1Awal dan akhir: `^` dan `$`Menambatkan pola ke karakter pertama atau terakhir dari string.~8 min
  2. 3.2Batasan kata: `\b` `\B`Transisi antara karakter kata dan non-kata; menemukan seluruh kata.~10 min
  3. 3.3Bendera `m`: multilineDengan bendera `m`, `^` dan `$` berlabuh ke awal/akhir setiap baris.~10 min
  4. 3.4Garis kosong dan rapikanPola yang berguna: mencocokkan baris kosong, memangkas spasi di awal/akhir baris.~10 min

04 · Modul 4 — Kelompok dan pergantian

4 pelajaran

Kelompokkan dengan `()`, pilih di antara alternatif dengan `|`, hindari pengambilan dengan `(?:...)`, beri nama grup dengan `(?<nama>...)` dan rujuk kembali ke pengambilan sebelumnya dengan referensi balik.

  1. 4.1Grup tangkapan: `(...)`Tanda kurung untuk mengelompokkan dan menangkap; akses grup 1, 2, 3… dalam pertandingan.~10 min
  2. 4.2Pergantian: `|`Pipa memilih antara dua atau lebih subpola; prioritas dan tanda kurung.~10 min
  3. 4.3Grup yang tidak menangkap: `(?:...)`Mengelompokkan tanpa membuat tangkapan: berguna saat Anda hanya perlu mengukur atau bergantian.~10 min
  4. 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

4 pelajaran

Tentukan set khusus dengan `[...]`, gunakan rentang, negasikan dengan `[^...]` dan capai properti Unicode dengan `\p{...}` dan tanda `u`.

  1. 5.1Kumpulan karakter: `[abc]`Tanda kurung siku menentukan sekumpulan karakter yang diperbolehkan dalam satu posisi.~8 min
  2. 5.2Rentang di dalam kelas: `[a-z0-9]`Interval melalui tanda hubung; menggabungkan rentang dan karakter tunggal.~8 min
  3. 5.3Negasi: `[^...]`Kelas yang dinegasikan cocok dengan apa pun **kecuali** karakter yang terdaftar.~8 min
  4. 5.4Properti Unicode lolos`\p{L}`, `\p{N}`, `\p{Script=...}` dengan tanda `u`: kelas Unicode semantik.~12 min

06 · Modul 6 — Melihat-lihat

4 pelajaran

Pernyataan lebar nol: melihat ke depan atau ke belakang dalam string tanpa menggunakan karakter. Lihat ke depan `(?=)` `(?!)`, lihat ke belakang `(?<=)` `(?<!)`.

  1. 6.1Pandangan ke depan yang positif: `(?=...)`Periksa apakah pola tertentu mengikuti posisi saat ini, tanpa menghabiskannya.~10 min
  2. 6.2Pandangan ke depan negatif: `(?!...)`Periksa apakah pola tertentu TIDAK mengikuti posisi saat ini.~10 min
  3. 6.3Lihat ke belakang: `(?<=...)` `(?<!...)`Versi pencarian "lihat ke belakang"; Dukungan ES2018+.~12 min
  4. 6.4Melihat-lihat dalam praktiknyaEkstrak nilai tanpa menyertakan konteks, validasi kata sandi, parsing angka yang dibatasi.~12 min

07 · Modul 7 - Bendera, substitusi, pemisahan

4 pelajaran

Semua flag (termasuk `d`, `v`), `String.prototype.replace`/`replaceAll`/`split` dengan regex, mereferensikan `$1`/`$<name>` dalam string substitusi dan callback pengganti.

  1. 7.1Semua bendera secara detail`g i ms u v y d`: apa yang dilakukan masing-masing dan bagaimana kombinasinya.~12 min
  2. 7.2Penggantian dasar dan `$1`Ganti kecocokan dengan string tetap atau dengan referensi balik `$1` / `$<nama>`.~10 min
  3. 7.3Ganti dengan panggilan balikFungsi substitusi: ubah setiap kecocokan dengan kode JS arbitrer, akses ke grup.~12 min
  4. 7.4Pisahkan dengan regexPisahkan string pada suatu pola (CSV permisif, tokenizer minimal).~10 min

08 · Modul 8 — Latihan

4 pelajaran

Gabungkan semuanya pada masalah nyata: validasi email, parsing log, ekstrak URL/IP, tulis pola yang tahan ReDoS.

  1. 8.1Memvalidasi emailPola email yang "cukup baik", dengan penjelasan trade-offnya.~12 min
  2. 8.2Pengurai log ApacheEkstrak IP, metode, jalur, dan kode status dari baris log menggunakan grup bernama.~12 min
  3. 8.3Mengekstrak URL dan IPKenali URL http(s) dan alamat IPv4 dalam teks bentuk bebas.~12 min
  4. 8.4Menulis pola aman ReDoSKenali pola bencana (`(a+)+b`), faktorkan ulang, gunakan bilangan mirip atom.~14 min