Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Tidak Peka Huruf dengan Cekap dalam Go?
Pertimbangkan senario di mana anda sedang membina ungkapan biasa daripada input pengguna, seperti yang dilihat dalam kod berikut:
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \._-]", -1))
di mana s.Name ialah rentetan seperti 'North by Northwest'. Anda mungkin mempertimbangkan untuk mengulangi aksara dan membina ungkapan tidak sensitif huruf besar secara manual:
for i := 0; i < len(s.Name); i++ { if s.Name[i] == " " { fmt.Fprintf(str, "%s[ \._-]", str); } else { fmt.Fprintf(str, "%s[%s%s]", str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i])) } }
Walau bagaimanapun, terdapat penyelesaian yang lebih cekap.
Anda boleh menentukan carian tidak peka huruf besar-besaran dengan menambahkan bendera (?i) pada permulaan anda regex:
reg, err := regexp.Compile("(?i)"+strings.Replace(s.Name, " ", "[ \._-]", -1))
Untuk regex tetap, bendera ini boleh digunakan seperti berikut:
r := regexp.MustCompile(`(?i)CaSe`)
Maklumat lanjut tentang bendera regex boleh didapati dalam dokumentasi pakej regexp/syntax.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Tidak Peka Huruf dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!