Pencocokan dan Penangkapan
match dan captures.
Pencocokan dan Penangkapan adalah pelajaran Ruby 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 Ruby Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ruby Academy mencakup 4 pelajaran total.
Objek MatchData
Ketika Anda memanggil regex.match(string), Ruby mengembalikan objek MatchData jika berhasil, atau nil jika gagal.
MatchData menyimpan teks yang cocok dan semua kelompok yang ditangkap.
m = /world/.match('hello world')
puts m.class
puts(m[0])Kecocokan Utuh: Indeks 0
Indeks 0 dari MatchData selalu merupakan substring yang cocok secara keseluruhan, terlepas dari kelompok apa pun yang ada.
m = /\d+/.match('order 4521 shipped')
puts(m[0])
puts(m.to_s)Kelompok Penangkap
Tanda kurung ( ) membuat kelompok penangkap. Setiap kelompok dapat diakses berdasarkan nomor yang dimulai dari 1.
m = /(\d{4})-(\d{2})/.match('2026-05')
puts(m[1])
puts(m[2])Metode captures
captures mengembalikan larik semua kelompok yang ditangkap (tidak termasuk kecocokan utuh pada indeks 0).
m = /(\w+)@(\w+)/.match('alice@example')
p m.capturesMembongkar Hasil Tangkapan
Karena captures mengembalikan larik, Anda dapat membongkar hasilnya langsung ke dalam variabel.
user, host = /(\w+)@(\w+)/.match('bob@server').captures
puts user
puts hostKecocokan Sebelum dan Sesudah
MatchData memiliki pembantu untuk teks di sekitar kecocokan:
pre_matchbagian sebelum kecocokanpost_matchbagian setelah kecocokan
m = /\d+/.match('abc123xyz')
puts(m.pre_match)
puts(m.post_match)scan untuk Semua Kecocokan
String#scan mengembalikan larik setiap kecocokan dalam teks, bukan hanya kecocokan pertama.
nums = '12 cats, 8 dogs, 3 birds'.scan(/\d+/)
p numsscan dengan Kelompok
Jika pola Anda memiliki kelompok, scan mengembalikan larik berisi larik-larik, satu untuk setiap kecocokan, yang masing-masing berisi tangkapan dari kecocokan tersebut.
pairs = 'a=1 b=2 c=3'.scan(/(\w)=(\d)/)
p pairsMenangani nil dengan Aman
Selalu ingat bahwa match mengembalikan nil ketika tidak ada yang cocok. Periksa hasilnya sebelum menggunakannya.
m = /(\d+)/.match('no digits here')
if m
puts m[1]
else
puts 'no match found'
endVariabel Khusus
Setelah pencocokan berhasil, Ruby menetapkan variabel global: $~ adalah MatchData, sedangkan $1 dan $2 adalah tangkapan bernomor.
Variabel ini praktis dalam skrip singkat, tetapi MatchData yang digunakan secara eksplisit lebih jelas dalam kode nyata.
if 'name: Alice' =~ /name: (\w+)/
puts $1
endMengekstrak Tanggal
Gabungkan kelompok dan tangkapan untuk mengambil data terstruktur dari sebuah teks dalam satu langkah.
year, month, day = /(\d{4})-(\d{2})-(\d{2})/.match('2026-05-29').captures
puts "Year #{year}, Month #{month}, Day #{day}"Pemeriksaan Singkat
Diberikan 'a=1 b=2'.scan(/(\w)=(\d)/), seperti apa bentuk hasilnya?
Ringkasan: Mencocokkan dan Menangkap
Sekarang Anda dapat mengekstrak data dari kecocokan:
matchmengembalikan MatchData atau nil- Indeks 0 adalah kecocokan utuh, sedangkan indeks 1 dan seterusnya adalah kelompok
capturesmengembalikan semua kelompok sebagai larikscanmenemukan setiap kecocokan dalam teks- Selalu periksa kemungkinan
nil
p 'x1 y2 z3'.scan(/([a-z])(\d)/)Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pencocokan dan Penangkapan” gratis?
Ya — teks lengkap “Pencocokan dan Penangkapan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Ruby Academy, upgrade ke CoddyKit PRO. Kursus Ruby Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pencocokan dan Penangkapan”?
match dan captures. Kamu berlatih Ruby 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 Ruby Academy?
Tidak diperlukan pengalaman sebelumnya. Ruby 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 “Pencocokan dan 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 Ruby Academy ini?
Ya. Setiap pelajaran Ruby 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
- Literal Regex
- Pencocokan dan Penangkapan
- Substitusi
- Grup Bernama dan Anchor