Cari Padanan dengan Regex dalam Go
Apabila bekerja dengan Go, anda mungkin menghadapi keperluan untuk memadankan corak tertentu dalam rentetan menggunakan ungkapan biasa. Begini cara untuk mencapainya menggunakan pakej regexp:
Soalan:
Bagaimana saya boleh mencari semua padanan untuk ungkapan biasa yang ditentukan dalam rentetan tertentu dan mengembalikannya sebagai tatasusunan?
Contoh:
Pertimbangkan rentetan: "{bandar}, {negeri} {zip}". Matlamatnya adalah untuk mengembalikan tatasusunan yang mengandungi semua subrentetan yang disertakan dengan pendakap kerinting.
Percubaan Awal:
Menggunakan pakej regexp, anda mungkin telah mencuba kod berikut:
r := regexp.MustCompile("/({[^}]*})/") matches := r.FindAllString("{city}, {state} {zip}", -1)
Walau bagaimanapun, kod ini mengembalikan kepingan kosong, menunjukkan bahawa tiada padanan ditemui.
Penyelesaian:
Untuk menyelesaikan isu ini, pertimbangkan langkah berikut:
Untuk Semua Padanan:
r := regexp.MustCompile(`{[^{}]*}`) matches := r.FindAllString("{city}, {state} {zip}", -1) fmt.Println(matches) // Prints: [{city}, {state}, {zip}]
Untuk Bahagian yang Ditangkap Hanya:
r := regexp.MustCompile(`{([^{}]*)}`) matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1) for _, v := range matches { fmt.Println(v[1]) // Prints: city, state, zip }
Atas ialah kandungan terperinci Bagaimana untuk Mencari Semua Padanan Regex dengan Cekap dalam Go String?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!