Maison  >  Article  >  développement back-end  >  Comment capturer plusieurs groupes cités dans Go : une solution Regex

Comment capturer plusieurs groupes cités dans Go : une solution Regex

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 00:53:28820parcourir

How to Capture Multiple Quoted Groups in Go: A Regex Solution

Capturer 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 majuscule suivie d'une option 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 :

<code class="go">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])
}</code>

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.


  1. "

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:
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