"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment capturer plusieurs groupes répétitifs dans des expressions régulières dans Go ?

Comment capturer plusieurs groupes répétitifs dans des expressions régulières dans Go ?

Publié le 2024-11-02
Parcourir:584

How to Capture Multiple Repeating Groups in Regular Expressions in Go?

Capture de groupes répétitifs dans Go

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).

Pièges des expressions régulières

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] )|(?: "([^"] )")`)

Capturer la commande et les arguments

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 :

  • Groupe 1 : La commande (majuscule mot)
  • Groupe 2 : Chaque argument (chaîne entre guillemets)

Itérer sur les résultats

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.

Dernier tutoriel Plus>

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