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.