Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Tidak Peka Huruf dengan Cekap dalam Go?

Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Tidak Peka Huruf dengan Cekap dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-12-07 20:41:18556semak imbas

How Can I Efficiently Create Case-Insensitive Regular Expressions in Go?

Ungkapan Biasa Tidak Peka Huruf 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]&quot;, str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i]))
  }
}

Walau bagaimanapun, terdapat penyelesaian yang lebih cekap.

Menggunakan Bendera Tidak Peka Huruf Besar

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn