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
592 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!

source:php.cn
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