Capturer des groupes répétés dans GO
Votre expression régulière ([A-Z] )(?: "([^"] )")* est conçu pour capturer un mot majuscule suivi de zéro ou plusieurs arguments entre guillemets. Cependant, comme vous l'avez découvert, il ne capture que le dernier argument.
Comprendre l'expression régulière
L'expression régulière se compose de deux groupes de capture :Solution
Pour capturer tous les arguments, modifiez l'expression régulière comme suit :re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")+`)
Exemple de code
package main
import (
"fmt"
"regexp"
)
func main() {
re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")+`)
results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)
fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
fmt.Println("Arg:", arg[2])
}
}
Aire de jeux
https://play.golang.org/p/8WmZ0yuHZjjCe 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!