Grup Penangkapan
Ambil substring dari hasil pencocokan.
Grup Penangkapan adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.
Grup Penangkap
Tanda kurung dalam ekspresi reguler membuat grup penangkap. Setiap grup mengingat subteks yang dicocokkannya, sehingga Anda dapat mengekstrak bagian terstruktur dari kecocokan yang lebih besar.
Satu Penangkapan
Membungkus sebagian pattern dalam () akan menangkapnya. Keluaran kecocokan menjadi Tuple: seluruh kecocokan terlebih dahulu, kemudian setiap hasil tangkapan.
if let m = "v2".firstMatch(of: /v(\d+)/) {
print("Whole: \(m.0)")
print("Group: \(m.1)")
}Beberapa Penangkapan
Setiap pasang tanda kurung menambahkan elemen lain ke Tuple keluaran, sesuai urutan dari kiri ke kanan.
if let m = "2024-05-30".wholeMatch(of: /(\d{4})-(\d{2})-(\d{2})/) {
print("Year: \(m.1)")
print("Month: \(m.2)")
print("Day: \(m.3)")
}Seluruh Kecocokan adalah .0
Elemen .0 dari keluaran selalu merupakan seluruh teks yang cocok. Hasil tangkapan dimulai dari .1.
if let m = "key=value".wholeMatch(of: /(\w+)=(\w+)/) {
print("Full: \(m.0)")
print("Key: \(m.1), Value: \(m.2)")
}Hasil Tangkapan adalah Subteks
Secara bawaan, hasil tangkapan berupa nilai Substring yang menunjuk ke dalam teks asli. Konversikan dengan String(...) jika Anda perlu menyimpannya.
if let m = "abc123".firstMatch(of: /([a-z]+)(\d+)/) {
let letters = String(m.1)
let numbers = String(m.2)
print(letters, numbers)
}Hasil Tangkapan Opsional
Jika suatu grup bersifat opsional (diikuti oleh ?), hasil tangkapannya dapat berupa nil ketika grup tersebut tidak ikut dalam kecocokan.
if let m = "color".wholeMatch(of: /colou?(r)/) {
print("Captured: \(m.1)")
}Hasil Tangkapan Bernama
Anda dapat memberi nama pada grup dengan (?<name>...) dan membacanya melalui keluaran bernama, yang lebih jelas daripada indeks numerik.
let re = /(?<area>\d{3})-(?<line>\d{4})/
if let m = "555-1234".wholeMatch(of: re) {
print("Area: \(m.area)")
print("Line: \(m.line)")
}Melakukan Iterasi pada Hasil Tangkapan
Gabungkan hasil tangkapan dengan matches(of:) untuk mengekstrak data terstruktur dari banyak kecocokan sekaligus.
let log = "a=1 b=2 c=3"
for m in log.matches(of: /(\w+)=(\d+)/) {
print("\(m.1) -> \(m.2)")
}Grup Bertingkat
Grup dapat bertingkat. Grup luar menangkap keseluruhan, sedangkan grup dalam menangkap bagian-bagiannya. Penomoran mengikuti urutan tanda kurung pembuka.
if let m = "12:30".wholeMatch(of: /((\d+):(\d+))/) {
print("All: \(m.1)")
print("H: \(m.2), M: \(m.3)")
}Grup Tanpa Penangkapan
Gunakan (?:...) untuk mengelompokkan tanpa menangkap, ketika Anda hanya memerlukan pengelompokan untuk pengulang dan tidak menginginkan elemen Tuple tambahan.
if let m = "abab".wholeMatch(of: /(?:ab)+/) {
print("Matched: \(m.0)")
}Membangun Pengurai
Hasil tangkapan mengubah teks mentah menjadi nilai bertipe. Di sini kita mengurai teks koordinat menjadi bilangan bulat.
func parsePoint(_ s: String) -> (Int, Int)? {
guard let m = s.wholeMatch(of: /(\d+),(\d+)/),
let x = Int(m.1), let y = Int(m.2) else { return nil }
return (x, y)
}
print(parsePoint("3,7") ?? "nil")Pemeriksaan Cepat
Untuk pattern /(\d{4})-(\d{2})/ yang mencocokkan "2024-05", apa isi m.2?
Ringkasan
Tanda kurung membuat grup penangkap yang dapat diakses sebagai Tuple, dengan .0 sebagai seluruh kecocokan dan .1, .2, dan seterusnya sebagai hasil tangkapan. Anda telah melihat grup bernama, opsional, bertingkat, dan tanpa penangkapan. Berikutnya, Anda akan membangun ekspresi reguler dari kode Swift yang mudah dibaca dengan RegexBuilder.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Grup Penangkapan” gratis?
Ya — teks lengkap “Grup Penangkapan” 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 “Grup Penangkapan”?
Ambil substring dari hasil pencocokan. 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 2 dari 4.
Berapa lama pelajaran “Grup Penangkapan” 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.