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
Lepaskan: 2024-12-07 20:41:18
asal
561 orang telah melayarinya

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))
Salin selepas log masuk

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]))
  }
}
Salin selepas log masuk

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))
Salin selepas log masuk

Untuk regex tetap, bendera ini boleh digunakan seperti berikut:

r := regexp.MustCompile(`(?i)CaSe`)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan