Menemukan dan Mengekstrak
FindString dan submatch
Menemukan dan Mengekstrak adalah pelajaran Go 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 Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Melampaui Pencocokan
Pencocokan memberi tahu Anda apakah suatu pola ada. Keluarga Find memberi tahu Anda apa yang cocok dan di mana, sehingga Anda dapat mengekstrak data.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindString("order 42 ready"))
}FindString
FindString(s) mengembalikan kecocokan pertama sebagai teks, atau teks kosong jika tidak ada.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[a-z]+")
fmt.Printf("%q\n", re.FindString("123abc456"))
}FindAllString
FindAllString(s, n) mengembalikan setiap kecocokan sebagai irisan. Berikan -1 untuk semua kecocokan, atau batas positif.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("a1 b22 c333", -1))
}Membatasi Hasil
Berikan n positif untuk berhenti setelah jumlah kecocokan tersebut tercapai.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("1 2 3 4", 2))
}Menemukan Indeks
FindStringIndex(s) mengembalikan posisi bita awal dan akhir dari kecocokan pertama sebagai irisan dua elemen.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("cat")
fmt.Println(re.FindStringIndex("a cat here"))
}Grup Tangkapan
Tanda kurung membuat grup tangkapan. FindStringSubmatch mengembalikan kecocokan lengkap terlebih dahulu, lalu setiap grup yang ditangkap.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+)-(\\d+)")
m := re.FindStringSubmatch("12-34")
fmt.Println(m)
}Menggunakan Nilai Subkecocokan
Akses irisan subkecocokan berdasarkan indeks: elemen 0 adalah kecocokan lengkap, elemen 1 adalah grup pertama, dan seterusnya.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+):(\\d+)")
m := re.FindStringSubmatch("09:30")
fmt.Println("hour", m[1], "min", m[2])
}Grup Bernama
Beri nama grup dengan (?P<name>...), lalu baca grup tersebut melalui SubexpNames bersama irisan subkecocokan.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(?P<area>\\d{3})-(?P<num>\\d{4})")
m := re.FindStringSubmatch("555-1234")
for i, name := range re.SubexpNames() {
if name != "" {
fmt.Println(name, m[i])
}
}
}Semua Subkecocokan
FindAllStringSubmatch(s, n) mengembalikan irisan berisi irisan subkecocokan, satu untuk setiap kecocokan. Ini sangat berguna untuk mengurai banyak rekaman.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\w+)=(\\d+)")
all := re.FindAllStringSubmatch("x=1 y=2", -1)
for _, m := range all {
fmt.Println(m[1], m[2])
}
}Perilaku Tanpa Kecocokan
Saat tidak ada yang cocok, metode Find mengembalikan teks kosong atau irisan nil. Periksa hasilnya sebelum mengakses indeks agar tidak memicu panic.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
m := re.FindStringSubmatch("no digits")
fmt.Println(m == nil)
}Mengekstrak Data Nyata
Gabungkan grup untuk mengambil bidang terstruktur dari sebuah baris teks.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d{4})-(\\d{2})-(\\d{2})")
m := re.FindStringSubmatch("date: 2026-05-30")
fmt.Println("year", m[1])
}Pemeriksaan Singkat
Elemen mana dari irisan subkecocokan yang merupakan kecocokan lengkap?
Ringkasan: Menemukan dan Mengekstrak
Sekarang Anda dapat mengambil data dari teks:
FindStringdanFindAllStringmengembalikan kecocokan.FindStringSubmatchmengembalikan kecocokan lengkap beserta grup tangkapan.- Gunakan grup bernama dan periksa
nilsaat tidak ada yang cocok.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\w+)@(\\w+)")
m := re.FindStringSubmatch("user@host")
fmt.Println(m[1], "at", m[2])
}Belajar Go dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menemukan dan Mengekstrak” gratis?
Ya — teks lengkap “Menemukan dan Mengekstrak” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menemukan dan Mengekstrak”?
FindString dan submatch Kamu berlatih Go 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 Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go 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 “Menemukan dan Mengekstrak” 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 Go Academy ini?
Ya. Setiap pelajaran Go 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
- Dasar-Dasar regexp
- Menemukan dan Mengekstrak
- Mengganti Teks
- Tips Performa