Maison > développement back-end > Golang > Comment puis-je créer efficacement des expressions régulières insensibles à la casse dans Go ?

Comment puis-je créer efficacement des expressions régulières insensibles à la casse dans Go ?

Barbara Streisand
Libérer: 2024-12-07 20:41:18
original
630 Les gens l'ont consulté

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

Expressions régulières insensibles à la casse dans Go

Considérez un scénario dans lequel vous construisez une expression régulière à partir de l'entrée de l'utilisateur, comme le montre le code suivant :

reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \._-]", -1))
Copier après la connexion

où s.Name est une chaîne du type « North by Northwest ». Vous pouvez envisager de parcourir les caractères et de construire manuellement des expressions insensibles à la casse :

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]))
  }
}
Copier après la connexion

Cependant, il existe une solution plus efficace.

Utiliser l'indicateur insensible à la casse

Vous pouvez spécifier une recherche insensible à la casse en ajoutant le drapeau (?i) au début de votre regex :

reg, err := regexp.Compile("(?i)"+strings.Replace(s.Name, " ", "[ \._-]", -1))
Copier après la connexion

Pour une regex fixe, cet indicateur peut être utilisé comme suit :

r := regexp.MustCompile(`(?i)CaSe`)
Copier après la connexion

Plus d'informations sur les indicateurs d'expression régulière peuvent être trouvées dans la documentation du package regexp/syntax.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal