Maison >développement back-end >Golang >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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 06:29:02921parcourir

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

Capturer des 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 : analyser des 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 Regex

Une erreur courante consiste à utiliser une expression régulière telle que :

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

Cette expression régulière capture uniquement le dernier argument de la chaîne. Modifiez l'expression pour permettre la capture de plusieurs groupes d'arguments :

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

Capture de la commande et des arguments

Maintenant, pour extraire à la fois la commande et les arguments, utilisez la fonction FindAllStringSubmatch avec un régulier convenablement modifié expression :

<code class="go">results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)</code>

Ces groupes de capture d'expression régulière sont :

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

Itération sur les résultats

Enfin, pour parcourir les résultats et séparer la commande des arguments :

<code class="go">fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
    fmt.Println("Arg:", arg[2])
}</code>

En comblant les lacunes des expressions régulières, vous pouvez capturer efficacement les groupes récurrents dans votre code Go.

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