Remplacement de texte
Utiliser les motifs ReplaceAll
Remplacement de texte est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Remplacement fondé sur un motif
Les expressions régulières peuvent réécrire le texte, et pas seulement le rechercher. ReplaceAllString remplace chaque correspondance par une chaîne de remplacement.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.ReplaceAllString("a1b2c3", "#"))
}Remplacer des mots entiers
Un motif comme cat|dog vous permet de remplacer plusieurs possibilités en une seule passe.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("cat|dog")
fmt.Println(re.ReplaceAllString("my cat and dog", "pet"))
}Réduire les espaces blancs
Nettoyage courant : remplacez les suites d'espaces blancs par une seule espace à l'aide de \s+.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("\\s+")
fmt.Println(re.ReplaceAllString("too many spaces", " "))
}Faire référence aux groupes
Dans le remplacement, $1 insère le premier groupe de capture et $2 le deuxième. Cela permet de réorganiser les éléments correspondants.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+)-(\\d+)")
fmt.Println(re.ReplaceAllString("12-34", "$2-$1"))
}Références aux groupes nommés
Avec des groupes nommés, vous pouvez utiliser ${name} dans le remplacement pour plus de clarté.
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}"))
}Accolades sans ambiguïté
Utilisez les accolades ${1} lorsqu'un texte suit une référence de groupe, afin que $1 ne soit pas confondu avec un nom plus long.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+)")
fmt.Println(re.ReplaceAllString("7", "${1}px"))
}Remplacement littéral
ReplaceAllLiteralString ignore les références $ et insère exactement le remplacement tel qu'il est écrit.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.ReplaceAllLiteralString("a1", "$money"))
}Remplacer avec une fonction
ReplaceAllStringFunc appelle votre fonction pour chaque correspondance et remplace celle-ci par la valeur renvoyée. Cela permet d'effectuer des remplacements calculés.
package main
import (
"fmt"
"regexp"
"strings"
)
func main() {
re := regexp.MustCompile("[a-z]+")
out := re.ReplaceAllStringFunc("go is fun", strings.ToUpper)
fmt.Println(out)
}Remplacement calculé
Dans la fonction, vous pouvez transformer chaque correspondance comme vous le souhaitez ; ici, chaque suite de chiffres correspondante est doublée en l'entourant.
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)
}Masquage des données sensibles
Une utilisation pratique consiste à masquer les nombres, comme les suites de chiffres d'un numéro de carte, avant la journalisation.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("\\d{4}")
fmt.Println(re.ReplaceAllString("card 1234 5678", "****"))
}Travailler sur des octets
Il existe également des variantes travaillant sur des tranches d'octets, comme ReplaceAll ; elles reprennent les méthodes sur les chaînes pour les données binaires ou les données de tampon.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
out := re.ReplaceAll([]byte("a1b2"), []byte("#"))
fmt.Println(string(out))
}Vérification rapide
Comment insérez-vous le premier groupe capturé dans une chaîne de remplacement ?
Récapitulatif : remplacer du texte
Vous avez appris à réécrire du texte :
ReplaceAllStringremplace les correspondances ;$1/${name}font référence aux groupes.ReplaceAllLiteralStringignore l'expansion.ReplaceAllStringFunccalcule chaque remplacement.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\w+)\\s(\\w+)")
fmt.Println(re.ReplaceAllString("Ada Lovelace", "$2, $1"))
}Questions Fréquemment Posées
La leçon « Remplacement de texte » est-elle gratuite ?
Oui — le texte complet de « Remplacement de texte » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Remplacement de texte » ?
Utiliser les motifs ReplaceAll Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Remplacement de texte » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Les bases de regexp
- Recherche et extraction
- Remplacement de texte
- Conseils de performance