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:
ReplaceAllStringsostituisce le corrispondenze;$1/${name}fanno riferimento ai gruppi.ReplaceAllLiteralStringnon espande i riferimenti.ReplaceAllStringFunccalcola 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
- Nozioni di base su regexp
- Ricerca ed estrazione
- Sostituire il testo
- Consigli sulle prestazioni