0Pricing
Go Academy · Lezione

Sostituire il testo

Pattern ReplaceAll

Sostituire il testo è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 3 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.

Sostituzione basata su pattern

Le espressioni regolari possono riscrivere il testo, non solo cercarlo. ReplaceAllString sostituisce ogni corrispondenza con una stringa di sostituzione.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.ReplaceAllString("a1b2c3", "#"))
}

Sostituzione di parole intere

Un pattern come cat|dog consente di sostituire più alternative in un'unica operazione.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("cat|dog")
    fmt.Println(re.ReplaceAllString("my cat and dog", "pet"))
}

Compattazione degli spazi bianchi

Una pulizia comune consiste nel sostituire sequenze di spazi bianchi con un singolo spazio utilizzando \s+.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("\\s+")
    fmt.Println(re.ReplaceAllString("too   many    spaces", " "))
}

Riferimenti ai gruppi

Nel testo di sostituzione, $1 inserisce il primo gruppo di cattura e $2 il secondo. In questo modo è possibile riordinare le parti trovate.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\d+)-(\\d+)")
    fmt.Println(re.ReplaceAllString("12-34", "$2-$1"))
}

Riferimenti a gruppi denominati

Con i gruppi denominati, può utilizzare ${name} nella sostituzione per rendere il codice più chiaro.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(?P<y>\\d{4})-(?P<m>\\d{2})")
    fmt.Println(re.ReplaceAllString("2026-05", "${m}/${y}"))
}

Graffe sicure

Utilizzi le graffe ${1} quando dopo un riferimento a un gruppo compare altro testo, così $1 non viene confuso con un nome più lungo.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\d+)")
    fmt.Println(re.ReplaceAllString("7", "${1}px"))
}

Sostituzione letterale

ReplaceAllLiteralString ignora i riferimenti $ e inserisce la sostituzione esattamente come è stata scritta.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.ReplaceAllLiteralString("a1", "$money"))
}

Sostituire con una funzione

ReplaceAllStringFunc chiama la funzione per ogni corrispondenza e la sostituisce con il valore restituito. Questo consente di calcolare le sostituzioni.

package main

import (
    "fmt"
    "regexp"
    "strings"
)

func main() {
    re := regexp.MustCompile("[a-z]+")
    out := re.ReplaceAllStringFunc("go is fun", strings.ToUpper)
    fmt.Println(out)
}

Sostituzione calcolata

All'interno della funzione può trasformare ogni corrispondenza come preferisce; in questo caso raddoppia ogni sequenza di cifre trovata racchiudendola.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    out := re.ReplaceAllStringFunc("id5 and id9", func(m string) string {
        return "<" + m + ">"
    })
    fmt.Println(out)
}

Mascherare dati sensibili

Un utilizzo pratico consiste nel rimuovere i numeri, come le sequenze di cifre di una carta, prima di scriverli nei log.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("\\d{4}")
    fmt.Println(re.ReplaceAllString("card 1234 5678", "****"))
}

Lavorare sui byte

Esistono anche varianti che operano su slice di byte, come ReplaceAll, che rispecchiano i metodi per le stringhe e sono adatte a dati binari o contenuti nei buffer.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    out := re.ReplaceAll([]byte("a1b2"), []byte("#"))
    fmt.Println(string(out))
}

Verifica rapida

Come si inserisce il primo gruppo catturato in una stringa di sostituzione?

Riepilogo: sostituire il testo

Ha imparato a riscrivere il testo:

  • ReplaceAllString sostituisce le corrispondenze; $1/${name} fanno riferimento ai gruppi.
  • ReplaceAllLiteralString non espande i riferimenti.
  • ReplaceAllStringFunc calcola ogni sostituzione.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(\\w+)\\s(\\w+)")
    fmt.Println(re.ReplaceAllString("Ada Lovelace", "$2, $1"))
}

Domande Frequenti

La lezione «Sostituire il testo» è gratuita?

Sì — il testo completo di «Sostituire il testo» è 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 «Sostituire il testo»?

Pattern ReplaceAll 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 3 di 4.

Quanto tempo richiede la lezione «Sostituire il testo»?

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