Kumpulan Tangkapan
Ekstrak subrentetan daripada padanan.
Kumpulan Tangkapan ialah pelajaran Swift Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Swift Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
Kumpulan Tangkapan
Tanda kurungan dalam ungkapan nalar mencipta kumpulan tangkapan. Setiap kumpulan mengingati subrentetan yang dipadankannya, supaya anda boleh mengekstrak bahagian berstruktur daripada padanan yang lebih besar.
Satu Tangkapan
Mengelilingi sebahagian corak dengan () akan menangkapnya. Keluaran padanan menjadi tupel: keseluruhan padanan dahulu, diikuti setiap tangkapan.
if let m = "v2".firstMatch(of: /v(\d+)/) {
print("Whole: \(m.0)")
print("Group: \(m.1)")
}Berbilang Tangkapan
Setiap pasangan tanda kurungan menambahkan satu lagi unsur pada tupel keluaran, mengikut susunan 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)")
}Keseluruhan Padanan ialah .0
Unsur .0 bagi keluaran sentiasa merupakan keseluruhan teks yang sepadan. Tangkapan bermula pada .1.
if let m = "key=value".wholeMatch(of: /(\w+)=(\w+)/) {
print("Full: \(m.0)")
print("Key: \(m.1), Value: \(m.2)")
}Tangkapan ialah Subrentetan
Secara lalai, tangkapan ialah nilai Substring yang menunjuk ke dalam rentetan asal. Tukarkannya 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)
}Tangkapan Pilihan
Jika suatu kumpulan adalah pilihan (diikuti oleh ?), tangkapannya mungkin nil apabila kumpulan itu tidak terlibat dalam padanan.
if let m = "color".wholeMatch(of: /colou?(r)/) {
print("Captured: \(m.1)")
}Tangkapan Bernama
Anda boleh menamakan kumpulan dengan (?<name>...) dan membacanya melalui keluaran bernama, yang lebih jelas berbanding indeks berangka.
let re = /(?<area>\d{3})-(?<line>\d{4})/
if let m = "555-1234".wholeMatch(of: re) {
print("Area: \(m.area)")
print("Line: \(m.line)")
}Mengulang Tangkapan
Gabungkan tangkapan dengan matches(of:) untuk mengekstrak data berstruktur daripada banyak padanan serentak.
let log = "a=1 b=2 c=3"
for m in log.matches(of: /(\w+)=(\d+)/) {
print("\(m.1) -> \(m.2)")
}Kumpulan Bersarang
Kumpulan boleh bersarang. Kumpulan luar menangkap keseluruhannya, manakala kumpulan dalam menangkap bahagian-bahagiannya. Penomboran mengikut susunan tanda kurungan pembuka.
if let m = "12:30".wholeMatch(of: /((\d+):(\d+))/) {
print("All: \(m.1)")
print("H: \(m.2), M: \(m.3)")
}Kumpulan Tanpa Tangkapan
Gunakan (?:...) untuk mengumpulkan tanpa menangkap, apabila anda hanya memerlukan pengumpulan bagi pengkuantiti dan tidak mahu unsur tambahan dalam tupel.
if let m = "abab".wholeMatch(of: /(?:ab)+/) {
print("Matched: \(m.0)")
}Membina Penghurai
Tangkapan menukar teks mentah menjadi nilai yang ditaip. Di sini kita menghuraikan rentetan koordinat menjadi integer.
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")Semakan Pantas
Bagi corak /(\d{4})-(\d{2})/ yang memadankan "2024-05", apakah nilai m.2?
Ringkasan
Tanda kurungan mencipta kumpulan tangkapan yang boleh dicapai sebagai tupel, dengan .0 ialah keseluruhan padanan dan .1, .2... ialah tangkapan. Anda telah melihat kumpulan bernama, pilihan, bersarang dan tanpa tangkapan. Seterusnya, anda akan membina ungkapan nalar daripada kod Swift yang mudah dibaca dengan RegexBuilder.
Pelajari Swift dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Soalan Lazim
Adakah pelajaran “Kumpulan Tangkapan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “Kumpulan Tangkapan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Kumpulan Tangkapan”?
Ekstrak subrentetan daripada padanan. Anda berlatih Swift Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Swift Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Swift Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Kumpulan Tangkapan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.