REGEXEXTRACT extrait d'une chaîne le premier morceau de texte qui correspond à une expression régulière. C'est l'outil pour récupérer un numéro de commande dans une phrase, un domaine dans un e-mail ou des chiffres dans une cellule en désordre, là où LEFT, MID et FIND demanderaient des formules longues et fragiles.
Syntaxe
=REGEXEXTRACT(text, regular_expression)
text: Le texte dans lequel chercher.regular_expression: Le motif à rechercher, sous forme de texte entre guillemets. Google Sheets utilise la syntaxe RE2.
Le comportement dépend du motif :
- Pas de groupe de capture : renvoie tout le texte correspondant.
- Un groupe de capture
( ): ne renvoie que ce qui se trouve entre les parenthèses. - Plusieurs groupes de capture : renvoie chaque groupe dans sa propre cellule, en se déversant vers la droite.
- Aucune correspondance :
#N/A.
Exemples de base
=REGEXEXTRACT("Commande n°4521 expédiée", "\d+")
Renvoie 4521 : la première suite de chiffres.
=REGEXEXTRACT("ana@example.com", "@(.+)$")
Renvoie example.com. Les parenthèses signifient que seule la partie après @ est renvoyée.
=REGEXEXTRACT("2026-03-15", "(\d{4})-(\d{2})-(\d{2})")
Renvoie trois cellules : 2026, 03, 15.
Les briques des expressions régulières
\dun chiffre,\Dun non-chiffre\wune lettre, un chiffre ou un tiret bas,\Wl'inverse\sun espace blanc,\Sun non-espace blanc.n'importe quel caractère (sauf un saut de ligne)+un ou plusieurs,*zéro ou plusieurs,?zéro ou un{3}exactement 3,{2,4}entre 2 et 4[abc]l'un de a, b, c.[a-z]une lettre minuscule.[^0-9]tout sauf un chiffre^début du texte,$fin du texte(a|b)a ou b(?i)au début rend le motif insensible à la casse
La correspondance tient compte de la casse par défaut.
Dans une formule Sheets normale, tapez les barres obliques inverses telles quelles : "\d+". Inutile de les doubler.
Extractions courantes
Premier nombre d'un texte
=REGEXEXTRACT(A2, "\d+")
Pour les décimaux : "\d+\.?\d*".
Adresse e-mail
=REGEXEXTRACT(A2, "[\w.+-]+@[\w-]+\.[\w.-]+")
Domaine d'un e-mail ou d'une URL
=REGEXEXTRACT(A2, "@([\w.-]+)")
=REGEXEXTRACT(A2, "https?://(?:www\.)?([^/]+)")
Le groupe (?:...) est non capturant : seul le domaine, dans le second groupe, est renvoyé.
Texte entre deux repères
=REGEXEXTRACT(A2, "\[(.*?)\]")
Renvoie ce qui se trouve dans la première paire de crochets. .*? signifie « le moins possible », donc l'extraction s'arrête au premier crochet fermant.
Premier et dernier mot
=REGEXEXTRACT(A2, "^\S+")
=REGEXEXTRACT(A2, "\S+$")
Nombres issus d'un montant
=VALUE(REGEXEXTRACT(A2, "[\d.]+"))
REGEXEXTRACT renvoie toujours du texte : entourez-la de VALUE quand vous voulez calculer avec le résultat.
Extraire sur toute une colonne
REGEXEXTRACT traite une seule cellule. Utilisez ARRAYFORMULA pour une colonne, avec IFERROR pour masquer les lignes sans correspondance :
=ARRAYFORMULA(IFERROR(REGEXEXTRACT(A2:A, "\d+"), ""))
Obtenir toutes les correspondances, pas seulement la première
REGEXEXTRACT ne renvoie que la première correspondance. Pour obtenir tous les nombres d'un texte, remplacez tout ce qui n'est pas un chiffre par un séparateur, puis découpez :
=SPLIT(REGEXREPLACE(A2, "\D+", ","), ",")
Pour "a12b345c6", cette formule renvoie 12, 345, 6 dans des cellules séparées.
Erreurs courantes
#N/A: « Aucune correspondance trouvée pour REGEXEXTRACT ». Le motif ne correspond pas au texte. Vérifiez la casse (ajoutez(?i)), les espaces et les caractères échappés. Entourez deIFERRORpour les lignes qui peuvent ne pas correspondre.#VALUE!: « Expression régulière invalide ». Un problème de syntaxe : crochet ou parenthèse non fermé, ou une fonctionnalité que RE2 ne gère pas, comme les assertions avant(?=...)et les références arrière dans le motif.- Caractères spéciaux non échappés. Pour correspondre à un
.,?,(,),[,$ou+littéral, placez une barre oblique inverse devant. - Le nombre revient sous forme de texte. C'est toujours le cas. Utilisez
VALUE. - Seul le premier groupe semble apparaître. Avec plusieurs groupes, le résultat se déverse vers la droite. Assurez-vous que les cellules de droite sont vides.
REGEXEXTRACT et les autres fonctions de texte
- Utilisez
LEFT,RIGHTetMIDquand la position est fixe. - Utilisez
SPLITquand un séparateur clair délimite les morceaux. - Utilisez
REGEXEXTRACTquand la position varie et que c'est la forme du texte que vous connaissez. - Utilisez
REGEXMATCHpour tester la présence d'un motif, etREGEXREPLACEpour le modifier.
Questions fréquentes
REGEXEXTRACT tient-elle compte de la casse ? Oui. Commencez le motif par (?i) pour ignorer la casse.
Quelle variante d'expressions régulières utilise-t-elle ? RE2, qui gère la plupart de la syntaxe courante mais pas les assertions avant, les assertions arrière ni les références arrière dans le motif.
Peut-elle renvoyer plusieurs correspondances en un seul appel ? Non. Utilisez la formule SPLIT(REGEXREPLACE(...)) ci-dessus.
Fonctionne-t-elle sur des nombres ? Oui, l'entrée est d'abord convertie en texte.
Fonctions associées
REGEXMATCH: Teste si un texte correspond à un motif.REGEXREPLACE: Remplace le texte qui correspond à un motif.SPLIT: Divise un texte au niveau d'un séparateur.SUBSTITUTE: Remplace un texte précis sans motif.ARRAYFORMULA: Applique une formule à toute une plage.