Swift Academy · Pelajaran

Kumpulan Tangkapan

Ekstrak subrentetan daripada padanan.

Pelajaran 2 daripada 413 langkah

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.

Percuma untuk bermula

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.

Semua pelajaran dalam kursus ini

  1. Literal Regex dan Padanan
  2. Kumpulan Tangkapan
  3. DSL RegexBuilder
  4. Menggantikan dan Memisahkan Teks
← Kembali ke Swift Academy