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