Localização e extração
Use FindString e subcorrespondências
Localização e extração é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Além da correspondência
A correspondência informa se existe um padrão. A família Find informa o que correspondeu e onde, permitindo extrair dados.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindString("order 42 ready"))
}FindString
FindString(s) retorna a primeira correspondência como texto ou um texto vazio se não houver nenhuma.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[a-z]+")
fmt.Printf("%q\n", re.FindString("123abc456"))
}FindAllString
FindAllString(s, n) retorna todas as correspondências como uma fatia. Passe -1 para obter todas as correspondências ou um limite positivo.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("a1 b22 c333", -1))
}Limitando resultados
Passe um n positivo para parar depois dessa quantidade de correspondências.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("1 2 3 4", 2))
}Encontrando o índice
FindStringIndex(s) retorna as posições inicial e final, em bytes, da primeira correspondência como uma fatia de dois elementos.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("cat")
fmt.Println(re.FindStringIndex("a cat here"))
}Grupos de captura
Parênteses criam grupos de captura. FindStringSubmatch retorna primeiro a correspondência completa e depois cada grupo capturado.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+)-(\\d+)")
m := re.FindStringSubmatch("12-34")
fmt.Println(m)
}Usando valores de subcorrespondência
Acesse a fatia de subcorrespondências pelo índice: o elemento 0 é a correspondência completa, o elemento 1 é o primeiro grupo e assim por diante.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+):(\\d+)")
m := re.FindStringSubmatch("09:30")
fmt.Println("hour", m[1], "min", m[2])
}Grupos nomeados
Dê um nome a um grupo com (?P<name>...) e depois leia-o por meio de SubexpNames, juntamente com a fatia de subcorrespondências.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(?P<area>\\d{3})-(?P<num>\\d{4})")
m := re.FindStringSubmatch("555-1234")
for i, name := range re.SubexpNames() {
if name != "" {
fmt.Println(name, m[i])
}
}
}Todas as subcorrespondências
FindAllStringSubmatch(s, n) retorna uma fatia de fatias de subcorrespondências, uma para cada correspondência. É excelente para analisar muitos registros.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\w+)=(\\d+)")
all := re.FindAllStringSubmatch("x=1 y=2", -1)
for _, m := range all {
fmt.Println(m[1], m[2])
}
}Comportamento sem correspondência
Quando nada corresponde, os métodos Find retornam um texto vazio ou uma fatia nil. Verifique antes de acessar um índice para evitar uma interrupção.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
m := re.FindStringSubmatch("no digits")
fmt.Println(m == nil)
}Extraindo dados reais
Combine grupos para extrair campos estruturados de uma linha de texto.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d{4})-(\\d{2})-(\\d{2})")
m := re.FindStringSubmatch("date: 2026-05-30")
fmt.Println("year", m[1])
}Verificação rápida
Qual elemento de uma fatia de subcorrespondências representa a correspondência completa?
Recapitulação: encontrando e extraindo
Agora você consegue extrair dados de textos:
FindStringeFindAllStringretornam correspondências.FindStringSubmatchretorna a correspondência completa e os grupos de captura.- Use grupos nomeados e verifique se o valor é
nilquando nada corresponder.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\w+)@(\\w+)")
m := re.FindStringSubmatch("user@host")
fmt.Println(m[1], "at", m[2])
}Perguntas Frequentes
A aula “Localização e extração” é grátis?
Sim — o texto completo de “Localização e extração” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Localização e extração”?
Use FindString e subcorrespondências Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Localização e extração”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Noções básicas de regexp
- Localização e extração
- Substituição de texto
- Dicas de desempenho