0Pricing
Go Academy · Lezione

Ricerca ed estrazione

FindString e sottocorrispondenze

Ricerca ed estrazione è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Oltre il match

Il matching indica se esiste una corrispondenza. La famiglia di funzioni Find indica che cosa ha trovato e dove, consentendo di estrarre dati.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.FindString("order 42 ready"))
}

FindString

FindString(s) restituisce la prima corrispondenza come stringa oppure una stringa vuota se non ne trova nessuna.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[a-z]+")
    fmt.Printf("%q\n", re.FindString("123abc456"))
}

FindAllString

FindAllString(s, n) restituisce tutte le corrispondenze come slice. Passi -1 per ottenere tutte le corrispondenze oppure un limite positivo.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.FindAllString("a1 b22 c333", -1))
}

Limitazione dei risultati

Passi un valore positivo per n per interrompere la ricerca dopo quel numero di corrispondenze.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.FindAllString("1 2 3 4", 2))
}

Ricerca dell'indice

FindStringIndex(s) restituisce le posizioni iniziale e finale, espresse in byte, della prima corrispondenza come slice di due elementi.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("cat")
    fmt.Println(re.FindStringIndex("a cat here"))
}

Gruppi di cattura

Le parentesi creano gruppi di cattura. FindStringSubmatch restituisce prima la corrispondenza completa, quindi ogni gruppo catturato.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\d+)-(\\d+)")
    m := re.FindStringSubmatch("12-34")
    fmt.Println(m)
}

Utilizzo dei valori dei submatch

Acceda agli elementi della slice dei submatch: l'elemento 0 è la corrispondenza completa, l'elemento 1 è il primo gruppo e così via.

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])
}

Gruppi denominati

Assegni un nome a un gruppo con (?P<name>...), quindi lo legga tramite SubexpNames insieme alla slice dei submatch.

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])
        }
    }
}

Tutti i submatch

FindAllStringSubmatch(s, n) restituisce una slice di slice di submatch, una per ogni corrispondenza. È ideale per analizzare molti record.

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 in assenza di corrispondenze

Quando non viene trovata alcuna corrispondenza, i metodi Find restituiscono una stringa vuota o una slice nil. Controlli il risultato prima di accedere agli elementi per evitare un panic.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    m := re.FindStringSubmatch("no digits")
    fmt.Println(m == nil)
}

Estrazione di dati reali

Combini i gruppi per estrarre campi strutturati da una riga di testo.

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 rapida

Quale elemento di una slice dei submatch contiene la corrispondenza completa?

Riepilogo: ricerca ed estrazione

Ora può estrarre dati dal testo:

  • FindString e FindAllString restituiscono le corrispondenze.
  • FindStringSubmatch restituisce la corrispondenza completa insieme ai gruppi di cattura.
  • Utilizzi gruppi denominati e controlli nil quando non viene trovata alcuna corrispondenza.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\w+)@(\\w+)")
    m := re.FindStringSubmatch("user@host")
    fmt.Println(m[1], "at", m[2])
}

Domande Frequenti

La lezione «Ricerca ed estrazione» è gratuita?

Sì — il testo completo di «Ricerca ed estrazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Ricerca ed estrazione»?

FindString e sottocorrispondenze Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Ricerca ed estrazione»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Nozioni di base su regexp
  2. Ricerca ed estrazione
  3. Sostituire il testo
  4. Consigli sulle prestazioni
← Torna a Go Academy