Capture de plusieurs groupes cités dans Go
Cet article aborde le défi de l'analyse des chaînes qui suivent un format spécifique : une commande en majuscule suivie de facultative arguments cités. Le but est d'extraire à la fois la commande et les arguments sous forme de chaînes distinctes.
Pour gérer cette tâche, une expression régulière est utilisée : re1, _ := regexp.Compile(([A-Z] )(?: " (1 )")*). Le premier groupe de capture ([A-Z] ) correspond à la commande majuscule, tandis que le deuxième groupe de capture (?: "([^"] )")* correspond à zéro ou plusieurs arguments cités.
Cependant, le code fourni capture uniquement le dernier argument. Pour résoudre ce problème, une expression régulière plus souple est suggérée : re1, _ := regexp.Compile(([A-Z] )|(?: "(1 )")). Cette expression régulière utilise une union | pour autoriser soit une commande, soit un argument.
En modifiant le code en :
re1, _ := regexp.Compile(`([A-Z] )|(?: "([^"] )")`)
results := re1.FindAllStringSubmatch(`COMMAND "arg1" "arg2" "arg3"`, -1)
fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
fmt.Println("Arg:", arg[2])
}
tous les arguments peuvent désormais être capturés avec succès. Cette expression régulière révisée est plus polyvalente et s'adapte aux variations de format d'entrée où les commandes et les arguments peuvent apparaître dans des ordres différents.
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