Maison >développement back-end >Golang >Comment capturer plusieurs arguments dans Go à l'aide d'expressions régulières ?

Comment capturer plusieurs arguments dans Go à l'aide d'expressions régulières ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 10:56:01387parcourir

How to Capture Multiple Arguments in Go Using Regular Expressions?

Capturer plusieurs groupes dans Go : une étude de cas

Lors de l'analyse de chaînes contenant des mots majuscules suivis d'arguments facultatifs entre guillemets, en isolant des groupes individuels peut être difficile. Une approche courante consiste à utiliser des expressions régulières, comme illustré par l'extrait de code suivant :

<code class="go">re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`)
results := re1.FindAllStringSubmatch(input, -1)</code>

Cependant, des problèmes peuvent survenir lorsque plusieurs arguments sont présents, car seul le dernier argument est capturé. Pour résoudre ce problème, une expression régulière plus flexible est nécessaire.

Expression régulière améliorée

En assouplissant les contraintes de regroupement, nous pouvons capturer efficacement à la fois les commandes et les arguments :

re1, _ := regexp.Compile(`([A-Z]+)|(?: "([^"]+)")`)

Dans cette expression régulière révisée :

  • Le premier groupe ([A-Z] ) correspond aux mots majuscules (commandes).
  • Le deuxième groupe (?: "( [^"] )") correspond aux arguments entre guillemets, permettant plusieurs occurrences.

Extraction et affichage

Une fois les groupes capturés, nous pouvons extraire et affichez la commande et les arguments séparément :

fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
    fmt.Println("Arg:", arg[2])
}

Cette approche permet une analyse efficace des chaînes avec des structures de commande bien définies.

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