0Pricing
Go Academy · Aula

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:

  • FindString e FindAllString retornam correspondências.
  • FindStringSubmatch retorna a correspondência completa e os grupos de captura.
  • Use grupos nomeados e verifique se o valor é nil quando 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

  1. Noções básicas de regexp
  2. Localização e extração
  3. Substituição de texto
  4. Dicas de desempenho
← Voltar para Go Academy