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).
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>
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 :
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!