Maison > développement back-end > Golang > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-10-26 00:53:28
original
873 Les gens l'ont consulté

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>
Copier après la connexion

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!

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