Merakam Kumpulan dalam Ungkapan Biasa Go
Apabila mengalihkan kod daripada Ruby ke Go, pembangun sering menghadapi masalah keserasian dengan ungkapan biasa. Ruby menyokong menangkap kumpulan dalam regex, ciri yang tidak tersedia secara asli dalam pustaka RE2 Go.
Menulis Semula Ungkapan untuk Go
Untuk meniru fungsi kumpulan menangkap, langkah berikut boleh diambil:
1. Gunakan Kumpulan Tangkapan Bernama:
Daripada menggunakan kurungan sudut, tambahkan "P" antara kurungan pembukaan dan nama kumpulan, cth., (?P
2. Nama Kumpulan Rujukan Silang:
Gunakan fungsi regexp.SubexpNames() untuk mendapatkan senarai nama kumpulan tangkapan.
3. Akses Data Ditangkap:
Gunakan nama kumpulan yang sesuai sebagai hujah untuk berfungsi seperti FindStringSubmatch untuk mendapatkan semula nilai yang ditangkap.
Contoh:
package main import ( "fmt" "regexp" ) func main() { r := regexp.MustCompile(`(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})`) s := `2015-05-27` fmt.Printf("Matched Substrings: %#v\n", r.FindStringSubmatch(s)) fmt.Printf("Group Names: %#v\n", r.SubexpNames()) }
Output:
Matched Substrings: [2015 05 27] Group Names: [ Year Month Day ]
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Menangkap Kumpulan dalam Ungkapan Biasa Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!