Menangkap Kumpulan Berulang dalam GO
Apabila cuba menghuraikan rentetan yang mengikut format tertentu, seperti perkataan huruf besar diikuti dengan sifar atau lebih ganda -hujah yang dipetik, adalah perlu untuk menentukan ungkapan biasa yang menangkap elemen yang dikehendaki. Dalam senario yang disediakan, percubaan untuk menangkap hujah berulang menggunakan ungkapan biasa berikut:
re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`)
gagal menangkap semua hujah dengan betul. Untuk menyelesaikan isu ini, ungkapan biasa yang disemak semula dicadangkan:
re1, _ := regexp.Compile(`([A-Z]+)|(?: "([^"]+)")`)
Ungkapan biasa yang disemak ini sepadan sama ada perkataan huruf besar atau rentetan petikan dua tanpa menangkap petikan di sekeliling. Pendekatan ini membolehkan penangkapan hujah berulang yang lebih baik, seperti yang ditunjukkan dalam coretan kod berikut:
results := re1.FindAllStringSubmatch(`COMMAND "arg1" "arg2" "arg3"`, -1) fmt.Println("Command:", results[0][1]) for _, arg := range results[1:] { fmt.Println("Arg:", arg[2]) }
Pendekatan yang disemak ini berjaya menangkap perintah dan tiga hujahnya dan mencetaknya secara berasingan.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Kumpulan Berulang dalam Ungkapan Biasa Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!