Ao trabalhar com strings que seguem um padrão específico, capturar grupos repetidos pode ser uma tarefa comum. Em Go, expressões regulares são uma ferramenta poderosa para esse propósito.
Considere o seguinte problema: Analisar strings compostas por uma palavra maiúscula seguida por zero ou mais argumentos entre aspas duplas. O objetivo é extrair o comando (palavra maiúscula) e os argumentos (strings entre aspas).
Um erro comum é usar uma expressão regular como:
re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)
Este regex captura apenas o último argumento da string. Modifique a expressão para permitir a captura de vários grupos de argumentos:
re1, _ := regexp.Compile(`([A-Z] )|(?: "([^"] )")`)
Agora, para extrair o comando e os argumentos, empregue a função FindAllStringSubmatch com uma expressão regular adequadamente modificada:
results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)
Estes grupos de captura de regex são:
Finalmente, para iterar sobre os resultados e separe o comando dos argumentos:
fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
fmt.Println("Arg:", arg[2])
}
Ao resolver as deficiências das expressões regulares, você pode capturar grupos recorrentes com eficácia em seu código Go.
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