0Pricing
Ruby Academy · Pelajaran

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.captures

Membongkar 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 host

Kecocokan Sebelum dan Sesudah

MatchData memiliki pembantu untuk teks di sekitar kecocokan:

  • pre_match bagian sebelum kecocokan
  • post_match bagian 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 nums

scan 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 pairs

Menangani 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'
end

Variabel 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
end

Mengekstrak 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:

  • match mengembalikan MatchData atau nil
  • Indeks 0 adalah kecocokan utuh, sedangkan indeks 1 dan seterusnya adalah kelompok
  • captures mengembalikan semua kelompok sebagai larik
  • scan menemukan 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

  1. Literal Regex
  2. Pencocokan dan Penangkapan
  3. Substitusi
  4. Grup Bernama dan Anchor
← Kembali ke Ruby Academy