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!