Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mensimulasikan Pandangan Negatif di Belakang dalam Ungkapan Biasa Go?
Simulasi Pandang Belakang Negatif dalam Go
Dalam Go, pernyataan pandangan negatif di belakang tidak disokong atas sebab prestasi. Ini boleh menimbulkan cabaran apabila cuba memadankan corak menggunakan pengendali lihat di belakang.
Sebagai contoh, pandangan di belakang negatif mungkin digunakan untuk mengekstrak perintah daripada rentetan, tidak termasuk mana-mana aksara utama daripada set [@#/]. Menggunakan penegasan pandangan belakang negatif:
\b(?<![@#\/])\w.*
Walau bagaimanapun, regex ini tidak akan disusun dalam Go kerana kekurangan sokongan untuk pandangan belakang negatif.
Pendekatan Alternatif
Sebaliknya, kita boleh menggantikan pandangan negatif di belakang dengan set aksara yang dinafikan, yang sepadan dengan mana-mana watak tidak dalam set.
Reex dikemas kini:
\b[^@#/]\w.*
Jika aksara utama daripada set [@#/] dibenarkan pada permulaan rentetan, kita boleh gunakan ^ sauh:
(?:^|[^@#\/])\b\w.*
Penapis Fungsi
Sebagai alternatif, kita boleh menggunakan fungsi penapis dalam Pergi untuk menapis rentetan yang bermula dengan aksara daripada set [@#/].
func Filter(vs []string, f func(string) bool) []string { vsf := make([]string, 0) for _, v := range vs { if f(v) { vsf = append(vsf, v) } } return vsf }
Proses Fungsi
Kami juga boleh mencipta fungsi proses yang menggunakan penapis fungsi:
func Process(inp string) string { t := strings.Split(inp, " ") t = Filter(t, func(x string) bool { return strings.Index(x, "#") != 0 && strings.Index(x, "@") != 0 && strings.Index(x, "/") != 0 }) return strings.Join(t, " ") }
Fungsi proses ini boleh digunakan untuk mengubah rentetan input, mengalih keluar sebarang perkataan yang bermula dengan aksara daripada set [@#/].
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan Pandangan Negatif di Belakang dalam Ungkapan Biasa Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!