Menangkap Kumpulan dalam Ungkapan Biasa Go
Dalam Go, ungkapan biasa menggunakan perpustakaan RE2, yang tidak mempunyai sokongan asli untuk menangkap kumpulan seperti yang terdapat dalam Ruby dan bahasa lain. Walau bagaimanapun, terdapat penyelesaian untuk mencontohi fungsi ini.
Untuk mencapai tingkah laku yang diingini, seseorang perlu menambahkan "P" pada nama kumpulan, seperti yang digambarkan dalam ungkapan dikemas kini berikut:
(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})
Untuk mengekstrak nilai daripada kumpulan penangkap, seseorang boleh menggunakan fungsi re.SubexpNames() untuk mendapatkan nama kumpulan dan merujuk silang dengan padanan data.
Pertimbangkan contoh berikut:
package main import ( "fmt" "regexp" ) func main() { r := regexp.MustCompile(`(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})`) fmt.Printf("%#v\n", r.FindStringSubmatch(`2015-05-27`)) fmt.Printf("%#v\n", r.SubexpNames()) }
Dalam contoh ini, r.FindStringSubmatch() mengembalikan subrentetan yang sepadan dan r.SubexpNames() yang sepadan memberikan nama kumpulan:
[]string{"2015", "05", "27"} []string{"", "Year", "Month", "Day"}
Oleh itu, seseorang boleh mengakses tahun, bulan dan hari yang ditangkap dengan mudah menggunakan nama kumpulan, menawarkan fungsi yang sama untuk menangkap kumpulan dalam bahasa lain.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meniru Kumpulan Menangkap dalam Ungkapan Biasa Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!