Table des matières
Vous n'avez jamais compris pourquoi les expressions régulières ne sont pas prises en charge dans les formules Excel ? Maintenant, elles le sont :) Avec nos fonctions personnalisées, vous pouvez facilement trouver, remplacer, extraire et supprimer les chaînes de caractères correspondant à un modèle spécifique.
À première vue, Excel a tout ce dont vous pouvez avoir besoin pour manipuler des chaînes de texte. Hmm... et les expressions régulières ? Oups, il n'y a pas de fonctions Regex intégrées dans Excel. Mais personne ne dit que nous ne pouvons pas créer nos propres fonctions :)
Qu'est-ce qu'une expression régulière ?
Une expression régulière (alias regex ou regexp ) est une séquence de caractères spécialement codée qui définit un motif de recherche. À l'aide de ce motif, vous pouvez trouver une combinaison de caractères correspondante dans une chaîne ou valider une entrée de données. Si vous êtes familier avec la notation des jokers, vous pouvez considérer les regex comme une version avancée des jokers.
Les expressions régulières ont leur propre syntaxe, composée de caractères spéciaux, d'opérateurs et de constructions. Par exemple, [0-5] correspond à tout chiffre unique compris entre 0 et 5.
Les expressions régulières sont utilisées dans de nombreux langages de programmation, notamment JavaScript et VBA. Ce dernier possède un objet RegExp spécial, que nous utiliserons pour créer nos fonctions personnalisées.
Excel supporte-t-il les regex ?
Pour pouvoir utiliser des expressions régulières dans vos formules, vous devrez créer votre propre fonction définie par l'utilisateur (basée sur VBA ou .NET) ou installer des outils tiers prenant en charge les expressions régulières.
Aide-mémoire sur les Regex dans Excel
Qu'un motif regex soit très simple ou extrêmement sophistiqué, il est construit à l'aide de la syntaxe commune. Ce tutoriel n'a pas pour but de vous enseigner les expressions régulières. Pour cela, il existe de nombreuses ressources en ligne, des tutoriels gratuits pour les débutants aux cours premium pour les utilisateurs avancés.
Vous trouverez ci-dessous une référence rapide aux principaux modèles RegEx qui vous permettra de vous familiariser avec les principes de base et qui pourra également vous servir d'antisèche lorsque vous étudierez d'autres exemples.
Si vous êtes à l'aise avec les expressions régulières, vous pouvez passer directement aux fonctions RegExp.
Personnages
Ce sont les motifs les plus fréquemment utilisés pour faire correspondre certains caractères.
Patronage | Description | Exemple | Correspondances |
. | Caractère générique : correspond à n'importe quel caractère unique, à l'exception d'un saut de ligne. | .ot | point , chaud , pot , @ot |
\d | Caractère numérique : tout chiffre unique de 0 à 9 | \d | Sur a1b , matches 1 |
\D | Tout caractère qui n'est PAS un chiffre | \D | Sur a1b , matches a et b |
\s | Caractère d'espacement : espace, tabulation, nouvelle ligne et retour chariot. | .\s. | Sur 3 centimes , matches 3 c |
\S | Tout caractère autre qu'un espace blanc | \S+ | Sur 30 cents , matches 30 et cents |
\w | Caractère du mot : toute lettre ASCII, tout chiffre ou tout trait de soulignement. | \w+ | Sur 5_cats*** , matches 5_cats |
\W | Tout caractère qui n'est PAS un caractère alphanumérique ou un trait de soulignement. | \W+ | Sur 5_cats*** , matches *** |
\t | Onglet | ||
\n | Nouvelle ligne | \n\d+ | Dans la chaîne de deux lignes ci-dessous, les correspondances 10 5 chats 10 chiens |
\ | Échappe à la signification spéciale d'un caractère, afin que vous puissiez le rechercher. | \. \w+\. | Échappe un point pour que vous puissiez trouver le caractère littéral "." dans une chaîne de caractères. Monsieur. , Mme. , Prof. |
Classes de caractères
Grâce à ces motifs, vous pouvez faire correspondre des éléments de différents jeux de caractères.
Patronage | Description | Exemple | Correspondances |
[caractères] | Correspond à n'importe quel caractère unique entre parenthèses. | d[oi]g | chien et creuser |
[^caractères] | Correspond à n'importe quel caractère unique qui n'est PAS entre parenthèses. | d[^oi]g | Correspondances dag, dug , d1g Ne correspond pas chien et creuser |
[de-à] | Correspond à n'importe quel caractère dans l'intervalle entre les parenthèses. | [0-9] [a-z] [A-Z] | Tout chiffre unique de 0 à 9 Toute lettre minuscule simple Toute lettre majuscule simple |
Quantificateurs
Les quantificateurs sont des expressions spéciales qui précisent le nombre de caractères à comparer. Un quantificateur s'applique toujours au caractère qui le précède.
Patronage | Description | Exemple | Correspondances |
* | Zéro ou plus d'occurrences | 1a* | 1, 1a , 1aa, 1aaa etc. |
+ | Une ou plusieurs occurrences | po+ | Sur pot , matches po Sur pauvre , matches caca |
? | Zéro ou une occurrence | roa?d | route, tige |
* ? | Zéro ou plus d'occurrences, mais le moins possible | 1a* ? | Sur 1a , 1aa et 1aaa , matches 1a |
+ ? | Une ou plusieurs occurrences, mais le moins possible | po+ ? | Sur pot et pauvre , matches po |
? ? | Zéro ou une occurrence, mais le moins possible | roa ?? | Sur route et tige , matches ro |
{n} | Correspond au motif précédent n fois | \d{3} | Exactement 3 chiffres |
{n,} | Correspond au motif précédent n fois ou plus | \d{3,} | 3 chiffres ou plus |
{n,m} | Correspond au motif précédent entre n et m fois | \d{3,5} | De 3 à 5 chiffres |
Regroupement
Les constructions de regroupement sont utilisées pour capturer une sous-chaîne de la chaîne source, afin que vous puissiez effectuer une opération avec elle.
Syntaxe | Description | Exemple | Correspondances |
(modèle) | Groupe de capture : capture une sous-chaîne correspondante et lui attribue un numéro ordinal. | (\d+) | Sur 5 chats et 10 chiens , les captures 5 (groupe 1) et 10 (groupe 2) |
(?:pattern) | Groupe non capturant : correspond à un groupe mais ne le capture pas. | (\d+)(? : chiens) | Sur 5 chats et 10 chiens , les captures 10 |
\1 | Contenu du groupe 1 | (\d+)\+(\d+)=\2\+\1 | Correspondances 5+10=10+5 et capture 5 et 10 qui sont dans des groupes de capture |
\2 | Contenu du groupe 2 |
Ancres
Les ancres spécifient une position dans la chaîne d'entrée où il faut chercher une correspondance.
Ancrage | Description | Exemple | Correspondances |
^ | Début de la chaîne de caractères Note : [^entre parenthèses] signifie "pas". | ^\d+ | Un nombre quelconque de chiffres au début de la chaîne. Sur 5 chats et 10 chiens , matches 5 |
$ | Fin de la chaîne | \d+$ | Un nombre quelconque de chiffres à la fin de la chaîne. Sur 10 plus 5 donnent 15 , matches 15 |
\b | Limite des mots | \N-joyjoy\N | Correspondances joie comme un mot séparé, mais pas dans agréable . |
\B | PAS de limite de mots | \Bjoy\B | Correspondances joie sur agréable mais pas comme un mot séparé. |
Construction en alternance (OR)
L'opérande d'alternance active la logique OU, de sorte que vous pouvez faire correspondre soit tel ou tel élément.
Construire | Description | Exemple | Correspondances |
Correspond à n'importe quel élément unique séparé par la barre verticale. | (s | Sur elle vend des coquillages, correspond à vend et coquilles |
Solutions de contournement
Ces expressions sont parfois appelées "assertions de largeur zéro" ou "correspondance de largeur zéro" car elles correspondent à une position plutôt qu'à des caractères réels.
Remarque : dans la version RegEx de VBA, la fonction lookbehinds n'est pas prise en charge.
Patronage | Description | Exemple | Correspondances |
(?=) | Anticipation positive | X(?=Y) | Correspond à l'expression X lorsqu'elle est suivie de Y (c'est-à-dire si Y précède X). |
( ?!) | Anticipation négative | X(?!Y) | Correspond à l'expression X si elle n'est PAS suivie de Y |
(?<=) | Un regard positif en arrière | (?<=Y)X | Correspond à l'expression X lorsqu'elle est précédée de Y (c'est-à-dire s'il y a Y derrière X) |
( ? )</td | Regard négatif en arrière | ( ? Y)X</td | Correspond à l'expression X lorsqu'elle n'est PAS précédée de Y |
Maintenant que vous connaissez l'essentiel, passons à la partie la plus intéressante - l'utilisation des regex sur des données réelles pour analyser les chaînes de caractères et trouver les informations requises. Si vous avez besoin de plus de détails sur la syntaxe, le guide Microsoft sur le langage d'expression régulière peut s'avérer utile.
Fonctions RegEx personnalisées pour Excel
Comme nous l'avons déjà mentionné, Microsoft Excel ne dispose pas de fonctions RegEx intégrées. Pour activer les expressions régulières, nous avons créé trois fonctions VBA personnalisées (ou fonctions définies par l'utilisateur). Vous pouvez copier les codes à partir des pages liées ci-dessous ou de notre classeur type, puis les coller dans vos propres fichiers Excel.
Comment fonctionnent les fonctions RegExp de VBA
Cette section explique les mécanismes internes et peut être intéressante pour ceux qui veulent savoir exactement ce qui se passe en arrière-plan.
Pour commencer à utiliser les expressions régulières dans VBA, vous devez soit activer la bibliothèque de référence d'objets RegEx, soit utiliser la fonction CreateObject. Pour vous éviter de devoir définir la référence dans l'éditeur VBA, nous avons choisi cette dernière approche.
L'objet RegExp possède 4 propriétés :
- Patronage - est le motif à faire correspondre dans la chaîne d'entrée.
- Global - contrôle si l'on doit trouver toutes les correspondances dans la chaîne d'entrée ou seulement la première. Dans nos fonctions, il est mis à True pour obtenir tous les matches .
- MultiLine - détermine si le motif doit correspondre aux sauts de ligne dans les chaînes de caractères à plusieurs lignes ou seulement à la première ligne. dans chaque ligne .
- IgnoreCase - définit si une expression régulière est sensible à la casse (par défaut) ou insensible à la casse (définie sur True). Dans notre cas, cela dépend de la façon dont vous configurez le paramètre facultatif match_case Par défaut, toutes les fonctions sont sensible à la casse .
Limites de VBA RegExp
Excel VBA met en œuvre les modèles regex essentiels, mais il lui manque de nombreuses fonctionnalités avancées disponibles dans .NET, Perl, Java et d'autres moteurs regex. Par exemple, VBA RegExp ne prend pas en charge les modificateurs en ligne tels que (?i) pour la correspondance insensible à la casse ou (?m) pour le mode multi-ligne, les lookbehinds, les classes POSIX, pour n'en citer que quelques-uns.
Fonction de correspondance Regex d'Excel
Le site RegExpMatch recherche dans une chaîne d'entrée le texte qui correspond à une expression régulière et renvoie VRAI si une correspondance est trouvée, FAUX sinon.
RegExpMatch(texte, motif, [match_case])Où :
- Texte (obligatoire) - une ou plusieurs chaînes de caractères à rechercher.
- Patronage (obligatoire) - l'expression régulière à mettre en correspondance.
- Match_case (facultatif) - type de correspondance : VRAI ou omis - sensible à la casse ; FAUX - insensible à la casse.
Le code de la fonction est ici.
Exemple : comment utiliser des expressions régulières pour faire correspondre des chaînes de caractères
Dans l'ensemble de données ci-dessous, supposons que vous souhaitiez identifier les entrées contenant des codes SKU.
Étant donné que chaque UGS commence par 2 lettres majuscules, suivies d'un trait d'union, puis de 4 chiffres, vous pouvez les faire correspondre en utilisant l'expression suivante.
Patronage : \b[A-Z]{2}-\d{4}\b
Où [A-Z]{2} signifie 2 lettres majuscules de A à Z et \d{4} signifie 4 chiffres de 0 à 9. Une limite de mot \b indique qu'une UGS est un mot séparé et ne fait pas partie d'une chaîne plus grande.
Une fois le modèle établi, commencez à taper une formule comme vous le faites normalement, et le nom de la fonction apparaîtra dans la liste proposée par l'autocomplétion d'Excel :
En supposant que la chaîne d'origine se trouve en A5, la formule est la suivante :
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
Pour des raisons de commodité, vous pouvez saisir l'expression régulière dans une cellule distincte et utiliser une référence absolue ($A$2) pour le paramètre motif Cela garantit que l'adresse de la cellule restera inchangée lorsque vous copiez la formule dans d'autres cellules :
=RegExpMatch(A5, $A$2)
Pour afficher vos propres étiquettes de texte au lieu de VRAI et FAUX, imbriquez RegExpMatch dans la fonction IF et spécifiez les textes souhaités dans le champ valeur_si_vrai et valeur_si_false arguments :
=IF(RegExpMatch(A5, $A$2), "Oui", "Non")
Pour d'autres exemples de formules, veuillez consulter :
- Comment faire correspondre des chaînes de caractères à l'aide d'expressions régulières
- Validation des données Excel avec regex
Fonction d'extraction Regex Excel
Le site RegExpExtract recherche les sous-chaînes qui correspondent à une expression régulière et extrait toutes les correspondances ou une correspondance spécifique.
RegExpExtract(texte, motif, [numéro_instance], [casse_correspondante])Où :
- Texte (obligatoire) - la chaîne de texte à rechercher.
- Patronage (obligatoire) - l'expression régulière à mettre en correspondance.
- Numéro d'instance (facultatif) - un numéro de série qui indique l'instance à extraire. S'il est omis, il renvoie toutes les correspondances trouvées (par défaut).
- Match_case (facultatif) - définit s'il faut faire correspondre (VRAI ou omis) ou ignorer (FAUX) la casse du texte.
Vous pouvez obtenir le code de la fonction ici.
Exemple : comment extraire des chaînes de caractères à l'aide d'expressions régulières
Pour aller un peu plus loin dans notre exemple, extrayons les numéros de facture. Pour cela, nous utiliserons une regex très simple qui correspond à tout numéro à 7 chiffres :
Patronage : \b\d{7}\b
Mettez le motif en A2 et vous ferez le travail avec cette formule compacte et élégante :
=RegExpExtract(A5, $A$2)
Si un modèle est trouvé, la formule extrait un numéro de facture, si aucune correspondance n'est trouvée - rien n'est renvoyé.
Pour plus d'exemples, veuillez consulter : Comment extraire des chaînes de caractères dans Excel à l'aide de regex.
Fonction Regex Replace d'Excel
Le site RegExpReplace remplace les valeurs correspondant à une expression rationnelle par le texte que vous spécifiez.
RegExpReplace(texte, motif, remplacement, [numéro_instance], [casse_correspondante])Où :
- Texte (obligatoire) - la chaîne de texte à rechercher.
- Patronage (obligatoire) - l'expression régulière à mettre en correspondance.
- Remplacement (obligatoire) - le texte avec lequel remplacer les sous-chaînes correspondantes.
- Numéro d'instance (facultatif) - l'instance à remplacer, la valeur par défaut étant "toutes les correspondances".
- Match_case (facultatif) - contrôle s'il faut faire correspondre (VRAI ou omis) ou ignorer (FAUX) la casse du texte.
Le code de la fonction est disponible ici.
Exemple : comment remplacer ou supprimer des chaînes de caractères à l'aide de regex.
Certains de nos dossiers contiennent des numéros de carte de crédit. Ces informations sont confidentielles, et vous voudrez peut-être les remplacer par d'autres ou les supprimer complètement. Ces deux tâches peuvent être accomplies à l'aide de l'application RegExpReplace Comment ? Dans un deuxième scénario, nous remplacerons une chaîne de caractères vide.
Dans notre tableau d'exemple, tous les numéros de carte ont 16 chiffres, qui sont écrits en 4 groupes séparés par des espaces. Pour les trouver, nous reproduisons le modèle en utilisant cette expression régulière :
Patronage : \b\d{4} \d{4} \d{4} \d{4} \d{4}\b
Pour le remplacement, la chaîne suivante est utilisée :
Remplacement : XXXX XXXX XXXX XXXX XXXX
Et voici une formule complète pour remplacer les numéros de cartes de crédit avec des informations insensibles :
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")
Avec l'expression rationnelle et le texte de remplacement dans des cellules distinctes (A2 et B2), la formule fonctionne tout aussi bien :
Dans Excel, "supprimer" est un cas particulier de "remplacer". à supprimer les numéros de carte de crédit, il suffit d'utiliser une chaîne vide ("") pour le champ remplacement argument :
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")
Conseil : pour supprimer les lignes vides dans les résultats, vous pouvez utiliser une autre fonction RegExpReplace, comme indiqué dans cet exemple : Comment supprimer les lignes vides à l'aide d'une expression rationnelle.
Pour plus d'informations, veuillez consulter :
- Comment remplacer des chaînes de caractères dans Excel à l'aide de regex ?
- Comment supprimer des chaînes de caractères à l'aide de regex
- Comment supprimer les espaces blancs à l'aide de regex ?
Outils Regex permettant de faire correspondre, d'extraire, de remplacer et de supprimer des sous-chaînes.
Les utilisateurs de notre Ultimate Suite peuvent bénéficier de toute la puissance des expressions régulières sans insérer une seule ligne de code dans leurs classeurs. Tout le code nécessaire est écrit par nos développeurs et intégré en douceur dans votre Excel lors de l'installation.
Contrairement aux fonctions VBA présentées ci-dessus, les fonctions d'Ultimate Suite sont basées sur .NET, ce qui présente deux avantages principaux :
- Vous pouvez utiliser des expressions régulières dans des classeurs .xlsx normaux sans ajouter de code VBA et sans devoir les enregistrer en tant que fichiers compatibles avec les macros.
- Le moteur Regex de .NET prend en charge les expressions régulières classiques complètes, ce qui vous permet de construire des modèles plus sophistiqués.
Comment utiliser Regex dans Excel
Avec la suite Ultimate installée, l'utilisation d'expressions régulières dans Excel est aussi simple que ces deux étapes :
- Sur le Ablebits Data dans l'onglet Texte cliquez sur Outils Regex .
- Sur le Outils Regex faites ce qui suit :
- Sélectionnez les données sources.
- Entrez votre modèle de regex.
- Choisissez l'option souhaitée : Match , Extrait , Retirer ou Remplacer .
- Pour obtenir le résultat sous forme de formule et non de valeur, sélectionnez l'option Insérer comme une formule la case à cocher.
- Appuyez sur le bouton d'action.
Par exemple, pour supprimer les numéros de carte de crédit des cellules A2:A6, nous configurons ces paramètres :
En un tour de main, une fonction AblebitsRegex sera insérée dans une nouvelle colonne à droite de vos données originales. Dans notre cas, la formule est la suivante :
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
Une fois que la formule est là, vous pouvez la modifier, la copier ou la déplacer comme n'importe quelle formule native.
Comment insérer une formule Regex directement dans une cellule ?
Les fonctions AblebitsRegex peuvent également être insérées directement dans une cellule sans utiliser l'interface de l'add-in. Voici comment :
- Cliquez sur le bouton fx dans la barre de formule ou Fonction d'insertion sur le Formules onglet.
- Dans le Fonction d'insertion sélectionnez l'option AblebitsUDFs choisissez la fonction qui vous intéresse, puis cliquez sur OK.
- Définissez les arguments de la fonction comme vous le faites normalement et cliquez sur OK. C'est fait !
Pour plus d'informations, veuillez consulter la rubrique Outils Regex pour Excel.
Voilà comment utiliser les expressions régulières pour faire correspondre, extraire, remplacer et supprimer du texte dans les cellules Excel. Je vous remercie de votre lecture et j'ai hâte de vous retrouver sur notre blog la semaine prochaine !
Téléchargements disponibles
Excel Regex - exemples de formules (fichier .xlsm)
Ultimate Suite - version d'essai (fichier .exe)