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
Libérer: 2024-10-29 06:29:02
original
891 Les gens l'ont consulté

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

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

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

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

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!

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