0Pricing
Swift Academy · Pelajaran

DSL RegexBuilder

Susun regex dengan pembangun yang mudah dibaca.

DSL RegexBuilder adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

RegexBuilder DSL

Literal ekspresi reguler yang kompleks sulit dibaca. Modul RegexBuilder memungkinkan Anda membangun pattern dari kode Swift menggunakan DSL pembangun hasil, dengan komponen dan tipe bernama.

Mengimpor RegexBuilder

Impor modulnya, lalu buat Regex dengan pembangun Regex { ... }. Di dalamnya, setiap baris merupakan bagian berurutan dari pattern.

import RegexBuilder

let re = Regex {
    "ID-"
    OneOrMore(.digit)
}
print("ID-42".contains(re))

OneOrMore

OneOrMore(...) mencocokkan satu atau lebih komponen yang diberikan, setara dengan +. .digit adalah kelas karakter bawaan.

import RegexBuilder

let number = Regex {
    OneOrMore(.digit)
}
if let m = "abc789".firstMatch(of: number) {
    print(m.0)
}

ZeroOrMore dan Opsional

ZeroOrMore adalah * dan Optionally adalah ?. Keduanya membuat bagian pattern dapat diulang atau dilewati.

import RegexBuilder

let re = Regex {
    "color"
    Optionally("u")
    "r"
}
print("colour".wholeMatch(of: re) != nil)
print("color".wholeMatch(of: re) != nil)

Penangkapan

Capture { ... } membuat grup penangkap. Subteks yang cocok muncul di Tuple keluaran, sama seperti tanda kurung dalam literal.

import RegexBuilder

let re = Regex {
    "v"
    Capture { OneOrMore(.digit) }
}
if let m = "v123".wholeMatch(of: re) {
    print("Version: \(m.1)")
}

Mentransformasikan Hasil Tangkapan

Capture dapat menyertakan fungsi transformasi yang mengubah teks yang cocok menjadi nilai bertipe, sehingga keluarannya sudah berupa Int atau tipe lainnya.

import RegexBuilder

let re = Regex {
    Capture {
        OneOrMore(.digit)
    } transform: { Int($0)! }
}
if let m = "42".wholeMatch(of: re) {
    let n: Int = m.1
    print(n + 1)
}

CharacterClass

Gunakan CharacterClass atau bawaan seperti .word, .whitespace, dan rentang seperti ("a"..."z") untuk menentukan karakter yang diizinkan.

import RegexBuilder

let re = Regex {
    One(.word)
    ZeroOrMore(("a"..."z"))
}
print("hello".contains(re))

Jangkar dalam Pembangun

Tambahkan Anchor.startOfLine dan Anchor.endOfLine untuk pernyataan posisi di dalam pembangun.

import RegexBuilder

let re = Regex {
    Anchor.startOfLine
    OneOrMore(.digit)
    Anchor.endOfLine
}
print("100".wholeMatch(of: re) != nil)

Komponen yang Dapat Digunakan Kembali

Anda dapat menyimpan subpattern dalam variabel dan menggabungkannya, sehingga ekspresi reguler besar menjadi modular dan mudah dibaca.

import RegexBuilder

let field = Reference(Substring.self)
let re = Regex {
    Capture(as: field) { OneOrMore(.word) }
}
if let m = "name".firstMatch(of: re) {
    print(m[field])
}

Beberapa Penangkapan

Setiap Capture menambahkan elemen keluaran sesuai urutan, sehingga pengurai date menampilkan year, bulan, dan hari secara terpisah.

import RegexBuilder

let date = Regex {
    Capture { Repeat(.digit, count: 4) }
    "-"
    Capture { Repeat(.digit, count: 2) }
}
if let m = "2024-05".wholeMatch(of: date) {
    print("\(m.1) / \(m.2)")
}

Memilih DSL atau Literal

Gunakan literal untuk pattern pendek dan DSL untuk pattern panjang yang memperoleh manfaat dari nama, tipe, dan transformasi. Keduanya dapat dipertukarkan dan bahkan dapat disarangkan.

import RegexBuilder

let re = Regex {
    "#"
    Capture { /[0-9a-fA-F]{6}/ }
}
if let m = "#FF8800".wholeMatch(of: re) {
    print("Hex: \(m.1)")
}

Pemeriksaan Cepat

Komponen RegexBuilder mana yang mencocokkan satu atau lebih sesuatu?

Ringkasan

RegexBuilder DSL membangun ekspresi reguler dari kode Swift dengan Regex { }, menggunakan OneOrMore, Optionally, Capture dengan transformasi, kelas karakter, dan jangkar. Pendekatan ini membuat pattern kompleks mudah dibaca dan aman terhadap tipe. Berikutnya, Anda akan memodifikasi teks dengan replacing dan pemisahan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “DSL RegexBuilder” gratis?

Ya — teks lengkap “DSL RegexBuilder” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “DSL RegexBuilder”?

Susun regex dengan pembangun yang mudah dibaca. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “DSL RegexBuilder” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Literal Regex dan Pencocokan
  2. Grup Penangkapan
  3. DSL RegexBuilder
  4. Mengganti dan Membagi Teks
← Kembali ke Swift Academy