Capturando grupos repetidos no GO
Ao tentar analisar strings que seguem um formato específico, como palavras maiúsculas seguidas por zero ou mais duplos -argumentos entre aspas, é necessário definir uma expressão regular que capture os elementos desejados. No cenário fornecido, a tentativa de capturar argumentos repetidos usando a seguinte expressão regular:
re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)
falhou ao capturar todos os argumentos corretamente. Para resolver esse problema, uma expressão regular revisada é proposta:
re1, _ := regexp.Compile(`([A-Z] )|(?: "([^"] )")`)
Esta expressão regular revisada corresponde a uma palavra maiúscula ou a uma string entre aspas duplas sem capturar as aspas circundantes. Essa abordagem permite uma melhor captura de argumentos repetidos, conforme demonstrado no seguinte trecho de código:
results := re1.FindAllStringSubmatch(`COMMAND "arg1" "arg2" "arg3"`, -1) fmt.Println("Command:", results[0][1]) for _, arg := range results[1:] { fmt.Println("Arg:", arg[2]) }
Esta abordagem revisada captura com sucesso o comando e seus três argumentos e os imprime separadamente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3