Lorsque vous travaillez avec des chaînes qui suivent un modèle spécifique, la capture de groupes répétitifs peut être une tâche courante. Dans Go, les expressions régulières sont un outil puissant à cet effet.
Considérez le problème suivant : analyse de chaînes composées d'un mot majuscule suivi de zéro ou plusieurs arguments entourés de guillemets doubles. L'objectif est d'extraire à la fois la commande (mot majuscule) et les arguments (chaînes entre guillemets).
Une erreur courante consiste à utiliser une expression régulière telle que :
re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)
Ceci regex capture uniquement le dernier argument de la chaîne. Modifiez l'expression pour permettre la capture de plusieurs groupes d'arguments :
re1, _ := regexp.Compile(`([A-Z] )|(?: "([^"] )")`)
Maintenant, pour extraire à la fois la commande et les arguments, utilisez le Fonction FindAllStringSubmatch avec une expression régulière convenablement modifiée :
results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)
Cette regex capture des groupes sont :
Enfin, pour parcourir les résultats et séparez la commande des arguments :
fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
fmt.Println("Arg:", arg[2])
}
En comblant les lacunes des expressions régulières, vous pouvez capturer efficacement les groupes récurrents dans votre code Go.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3