Regex pour extraire des chaînes de caractères dans Excel (une ou toutes les correspondances)

  • Partage Ça
Michael Brown

Dans ce tutoriel, vous apprendrez à utiliser les expressions régulières dans Excel pour trouver et extraire les sous-chaînes correspondant à un modèle donné.

Microsoft Excel fournit un certain nombre de fonctions pour extraire du texte des cellules. Ces fonctions peuvent résoudre la plupart des problèmes d'extraction de chaînes de caractères dans vos feuilles de calcul. La plupart, mais pas tous. Lorsque les fonctions Text trébuchent, les expressions régulières viennent à la rescousse. Attendez... Excel n'a pas de fonctions RegEx ! C'est vrai, pas de fonctions intégrées. Mais rien ne vous empêche d'utiliser vos propres fonctions :)

    Fonction Regex Excel VBA pour extraire des chaînes de caractères

    Pour ajouter une fonction d'extraction Regex personnalisée à votre Excel, collez le code suivant dans l'éditeur VBA. Afin d'activer les expressions régulières en VBA, nous utilisons l'objet RegExp intégré de Microsoft.

    Public Function RegExpExtract(text As String , pattern As String , Optional instance_num As Integer = 0, Optional match_case As Boolean = True ) Dim text_matches() As String Dim matches_index As Integer On Error GoTo ErrHandl RegExpExtract = "" Set regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = pattern regex.Global = True regex.MultiLine = True If True = match_case Thenregex.ignorecase = False Else regex.ignorecase = True End If Set matches = regex.Execute(text) If 0 <; matches.Count Then If (0 = instance_num) Then ReDim text_matches(matches.Count - 1, 0) For matches_index = 0 To matches.Count - 1 text_matches(matches_index, 0) = matches.Item(matches_index) Next matches_index RegExpExtract = text_matches Else RegExpExtract = matches.Item(instance_num - 1) EndIf End If Exit Function ErrHandl : RegExpExtract = CVErr(xlErrValue) End Function

    Si vous avez peu d'expérience de VBA, un guide d'utilisation étape par étape peut s'avérer utile : Comment insérer un code VBA dans Excel.

    Remarque : pour que la fonction fonctionne, assurez-vous d'enregistrer votre fichier en tant que fichier de type classeur activé par macro (.xlsm).

    Syntaxe de RegExpExtract

    Le site RegExpExtract recherche dans une chaîne d'entrée les valeurs qui correspondent à une expression régulière et extrait une ou toutes les correspondances.

    La fonction a la syntaxe suivante :

    RegExpExtract(texte, motif, [numéro_instance], [casse_correspondante])

    Où :

    • Texte (obligatoire) - la chaîne de texte à rechercher.
    • Patronage (obligatoire) - l'expression régulière à comparer. Lorsqu'il est fourni directement dans une formule, le motif doit être placé entre guillemets.
    • 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 ou ignorer la casse du texte. Si VRAI ou omis (par défaut), une correspondance sensible à la casse est effectuée ; si FAUX - insensible à la casse.

    La fonction fonctionne dans toutes les versions d'Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 et Excel 2010.

    4 choses que vous devez savoir sur RegExpExtract

    Pour utiliser efficacement la fonction dans votre Excel, il y a quelques éléments importants à prendre en compte :

    1. Par défaut, la fonction renvoie toutes les correspondances trouvées dans les cellules voisines, comme le montre cet exemple. Pour obtenir une occurrence spécifique, fournissez un numéro correspondant à la commande numéro d'instance argument.
    2. Par défaut, la fonction est sensible à la casse Pour une correspondance insensible à la casse, définissez le paramètre match_case En raison des limitations de VBA, la construction insensible à la casse (?i) ne fonctionnera pas.
    3. Si un un modèle valide n'est pas trouvé la fonction ne renvoie rien (chaîne vide).
    4. Si le le modèle n'est pas valide une erreur #VALUE ! se produit.

    Avant de commencer à utiliser cette fonction personnalisée dans vos feuilles de calcul, vous devez comprendre ce dont elle est capable, n'est-ce pas ? Les exemples ci-dessous couvrent quelques cas d'utilisation courants et expliquent pourquoi le comportement peut différer dans Excel Array dynamique (Microsoft 365 et Excel 2021) et Excel traditionnel (2019 et versions antérieures).

    Remarque : les exemples d'expressions régulières sont écrits pour des ensembles de données très simples. Nous ne pouvons pas garantir qu'ils fonctionneront parfaitement dans vos feuilles de calcul réelles. Ceux qui ont de l'expérience avec les expressions régulières conviendront que l'écriture d'expressions régulières est un chemin sans fin vers la perfection - il y a presque toujours un moyen de la rendre plus élégante ou capable de traiter un plus grand nombre de données d'entrée.

    Regex pour extraire un nombre d'une chaîne de caractères

    En suivant la maxime de base de l'enseignement "du simple au complexe", nous allons commencer par un cas très simple : extraire un nombre d'une chaîne de caractères.

    La première chose à faire est de décider du numéro à extraire : le premier, le dernier, une occurrence spécifique ou tous les numéros.

    Extraire le premier numéro

    Étant donné que "d" signifie tout chiffre compris entre 0 et 9, et que "+" signifie une ou plusieurs fois, notre expression régulière prend la forme suivante :

    Patronage : \d+

    Définir numéro d'instance à 1 et vous obtiendrez le résultat souhaité :

    =RegExpExtract(A5, "\d+", 1)

    Où A5 est la corde d'origine.

    Pour plus de commodité, vous pouvez saisir le motif dans une cellule prédéfinie ($A$2 ) et verrouiller son adresse avec le signe $ :

    =RegExpExtract(A5, $A$2, 1)

    Obtenir le dernier numéro

    Pour extraire le dernier chiffre d'une chaîne, voici le modèle à utiliser :

    Patronage : (\d+)( ?!.*\d)

    Pour exprimer cela, nous utilisons un lookahead négatif ( ?!.*\d), ce qui signifie qu'à droite du motif, il ne doit y avoir aucun autre chiffre (\d), quel que soit le nombre de caractères qui le précèdent.

    =RegExpExtract(A5, "(\d+)( ?!.*\d)")

    Conseils :

    • Pour obtenir un événement particulier utiliser \d+ pour motif et un numéro de série approprié pour numéro d'instance .
    • La formule pour extraire tous les numéros est abordée dans l'exemple suivant.

    Regex pour extraire toutes les correspondances

    En poussant notre exemple un peu plus loin, supposons que vous vouliez obtenir tous les chiffres d'une chaîne, et pas seulement un.

    Comme vous vous en souvenez peut-être, le nombre de correspondances extraites est contrôlé par l'attribut facultatif numéro d'instance La valeur par défaut est toutes les correspondances, vous pouvez donc simplement omettre ce paramètre :

    =RegExpExtract(A2, "\d+")

    La formule fonctionne parfaitement pour une seule cellule, mais le comportement diffère dans Excel Dynamic Array et dans les versions non dynamiques.

    Excel 365 et Excel 2021

    Grâce à la prise en charge des tableaux dynamiques, une formule régulière se déverse automatiquement dans autant de cellules que nécessaire pour afficher tous les résultats calculés. En termes d'Excel, cela s'appelle une plage déversée :

    Excel 2019 et inférieur

    Dans un Excel pré-dynamique, la formule ci-dessus ne renverrait qu'une seule correspondance. Pour obtenir plusieurs correspondances, vous devez en faire une formule de tableau. Pour cela, sélectionnez une plage de cellules, tapez la formule et appuyez sur Ctrl + Shift + Enter pour la compléter.

    L'inconvénient de cette approche est l'apparition d'un grand nombre d'erreurs #N/A dans les "cellules supplémentaires". Malheureusement, on ne peut rien y faire (ni IFERROR ni IFNA ne peuvent les corriger, hélas).

    Extraire toutes les correspondances dans une cellule

    Lorsque vous traitez une colonne de données, l'approche ci-dessus ne fonctionne évidemment pas. Dans ce cas, la solution idéale serait de renvoyer toutes les correspondances dans une seule cellule. Pour ce faire, servez les résultats de RegExpExtract à la fonction TEXTJOIN et séparez-les avec le délimiteur de votre choix, par exemple une virgule et un espace :

    =TEXTJOIN(", ", TRUE, RegExpExtract(A5, "\d+"))

    Remarque : la fonction TEXTJOIN n'étant disponible que dans Excel pour Microsoft 365, Excel 2021 et Excel 2019, la formule ne fonctionnera pas dans les versions antérieures.

    Regex pour extraire le texte d'une chaîne de caractères

    L'extraction de texte à partir d'une chaîne alphanumérique est une tâche assez difficile dans Excel. Avec regex, cela devient un jeu d'enfant. Il suffit d'utiliser une classe négation pour faire correspondre tout ce qui n'est pas un chiffre.

    Patronage : [^\d]+

    Pour obtenir des sous-chaînes dans des cellules individuelles (plage de déversement), la formule est la suivante :

    =RegExpExtract(A5, "[^\d]+")

    Pour afficher toutes les correspondances dans une seule cellule, imbriquez la fonction RegExpExtract dans TEXTJOIN comme suit :

    =TEXTJOIN("", TRUE, RegExpExtract(A5, "[^\d]+"))

    Regex pour extraire l'adresse e-mail d'une chaîne de caractères

    Pour extraire une adresse électronique d'une chaîne contenant un grand nombre d'informations différentes, écrivez une expression régulière qui reproduit la structure de l'adresse électronique.

    Patronage : [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}

    En décomposant cette regex, voici ce que nous obtenons :

    • [\w\.\-]+ est un nom d'utilisateur qui peut inclure un ou plusieurs caractères alphanumériques, des traits de soulignement, des points et des traits d'union.
    • @ symbole
    • [A-Za-z0-9\.\-]+ est un nom de domaine composé de : lettres majuscules et minuscules, chiffres, traits d'union et points (dans le cas de sous-domaines). Les underscores ne sont pas autorisés ici, donc 3 jeux de caractères différents (tels que A-Z a-z et 0-9) sont utilisés à la place de \w qui correspond à toute lettre, chiffre ou underscore.
    • \.[A-Za-z]{2,24} est un domaine de premier niveau. Il se compose d'un point suivi de lettres majuscules et minuscules. La plupart des domaines de premier niveau ont une longueur de 3 lettres (par exemple .com .org, .edu, etc.), mais en théorie, ils peuvent contenir de 2 à 24 lettres (le TLD enregistré le plus long).

    En supposant que la chaîne de caractères se trouve en A5 et le motif en A2, la formule pour extraire une adresse électronique est la suivante :

    =RegExpExtract(A5, $A$2)

    Regex pour extraire le domaine d'un courriel

    Lorsqu'il s'agit d'extraire un domaine de messagerie, la première idée qui vient à l'esprit est d'utiliser un groupe de capture pour trouver le texte qui suit immédiatement le caractère @.

    Patronage : @([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})

    Servez-la à notre fonction RegExp :

    =RegExpExtract(A5, "@([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})")

    Et vous obtiendrez ce résultat :

    Avec les expressions régulières classiques, tout ce qui se trouve en dehors d'un groupe de capture n'est pas inclus dans l'extraction. Personne ne sait pourquoi RegEx VBA fonctionne différemment et capture également "@". Pour s'en débarrasser, vous pouvez supprimer le premier caractère du résultat en le remplaçant par une chaîne vide.

    =REPLACE(RegExpExtract(A5, "@([a-z\d][a-z\d\-.]*\.[a-z]{2,})", 1, FALSE), 1, 1, "")

    Expression régulière pour extraire les numéros de téléphone

    Les numéros de téléphone peuvent être écrits de nombreuses façons différentes, c'est pourquoi il est pratiquement impossible de trouver une solution qui fonctionne dans toutes les circonstances. Néanmoins, vous pouvez noter tous les formats utilisés dans votre ensemble de données et essayer de les faire correspondre.

    Pour cet exemple, nous allons créer une regex qui extraira les numéros de téléphone dans l'un de ces formats :

    (123) 345-6789

    (123) 345 6789

    (123)3456789

    123-345-6789

    123.345.6789

    123 345 6789

    1233456789

    Patronage : \(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b

    • La première partie \(?\d{3} correspond à zéro ou une parenthèse ouvrante suivie de trois chiffres d{3}.
    • La partie [-\. \)]* désigne tout caractère entre crochets apparaissant 0 fois ou plus : trait d'union, point, espace ou parenthèse fermante.
    • Ensuite, nous avons à nouveau trois chiffres d{3} suivis d'un trait d'union, d'un point ou d'un espace [-\. ] ? apparaissant 0 ou 1 fois.
    • Après cela, il y a un groupe de quatre chiffres : \d{4}.
    • Enfin, il existe un mot frontière \b définissant qu'un numéro de téléphone que nous recherchons ne peut pas faire partie d'un numéro plus grand.

    La formule complète prend cette forme :

    =RegExpExtract(A5, "\(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b")

    Veuillez noter que l'expression rationnelle ci-dessus peut renvoyer quelques résultats faussement positifs tels que 123) 456 7899 ou (123 456 7899. La version ci-dessous corrige ces problèmes. Toutefois, cette syntaxe ne fonctionne que dans les fonctions RegExp de VBA, et non dans les expressions rationnelles classiques.

    Patronage : (\(\d{3}\)

    Regex pour extraire la date d'une chaîne de caractères

    Une expression régulière permettant d'extraire une date dépend du format dans lequel la date apparaît dans une chaîne de caractères, par exemple :

    Pour extraire des dates telles que 1/1/21 ou 01/01/2021, l'expression rationnelle est la suivante : \d{1,2}\/\d{1,2}\/(\d{4})

    Il recherche un groupe de 1 ou 2 chiffres d{1,2} suivi d'une barre oblique, suivi d'un autre groupe de 1 ou 2 chiffres, suivi d'une barre oblique, suivi d'un groupe de 4 ou 2 chiffres (\d{4}).la première condition est dans l'alternance OU la construction est trouvée, les autres conditions ne sont pas vérifiées.

    Pour récupérer des dates comme 1-Jan-21 ou 01-Jan-2021, le modèle est : \d{1,2}-[A-Za-z]{3}-\d{2,4}

    Il recherche un groupe de 1 ou 2 chiffres, suivi d'un trait d'union, suivi d'un groupe de 3 lettres majuscules ou minuscules, suivi d'un trait d'union, suivi d'un groupe de 4 ou 2 chiffres.

    Après avoir combiné les deux modèles ensemble, nous obtenons la regex suivante :

    Patronage : \b\d{1,2}[\/-] (\d{1,2})

    Où :

    • La première partie est composée de 1 ou 2 chiffres : \d{1,2}
    • La deuxième partie est soit 1 ou 2 chiffres, soit 3 lettres : (\d{1,2})
    • La troisième partie est un groupe de 4 ou 2 chiffres : (\d{4})
    • Le délimiteur est soit une barre oblique, soit un trait d'union : [\/-]
    • Une limite de mot \b est placée des deux côtés pour indiquer clairement qu'une date est un mot distinct, et non une partie d'une chaîne plus grande.

    Comme vous pouvez le voir dans l'image ci-dessous, elle réussit à extraire les dates et à laisser de côté les sous-chaînes telles que 11/22/333. Cependant, elle renvoie toujours des résultats faussement positifs. Dans notre cas, la sous-chaîne 11-ABC-2222 en A9 correspond techniquement au format de date jj-mmm-aaaa et est donc extraite.

    Pour éliminer les faux positifs, vous pouvez remplacer la partie [A-Za-z]{3} par une liste complète d'abréviations de mois à trois lettres :

    Patronage : \b\d{1,2}[\/-] (\d{1,2})

    Pour ignorer la casse des lettres, nous donnons la valeur FALSE au dernier argument de notre fonction personnalisée :

    =RegExpExtract(A5, $A$2, 1, FALSE)

    Et cette fois, nous obtenons un résultat parfait :

    Regex pour extraire l'heure d'une chaîne de caractères

    Pour obtenir du temps dans le hh:mm ou hh:mm:ss l'expression suivante fonctionnera à merveille.

    Patronage : \b(0 ?[0-9]

    En décomposant cette regex, vous pouvez voir 2 parties séparées par

    Expression 1 : \b(0 ?[0-9]

    Récupère les heures avec AM/PM.

    Heure peut être n'importe quel nombre de 0 à 12. Pour l'obtenir, nous utilisons la construction OR ([0-9]).

    • [0-9] correspond à n'importe quel chiffre de 0 à 9.
    • 1 [0-2] correspond à n'importe quel nombre de 10 à 12

    Minute [0-5]\d est un nombre quelconque de 00 à 59.

    Deuxièmement ( :[0-5]\d) ? est également un nombre quelconque compris entre 00 et 59. Le quantificateur ? signifie zéro ou une occurrence, les secondes pouvant ou non être incluses dans la valeur temporelle.

    Expression 2 : \b([0-9]

    Extrait les heures sans AM/PM.

    Le site heure peut être n'importe quel nombre de 0 à 32. Pour l'obtenir, une construction OR différente ([0-9]

    • [0-9] correspond à n'importe quel chiffre de 0 à 9.
    • [0-1]\d correspond à n'importe quel numéro de 00 à 19
    • 2[0-3] correspond à n'importe quel nombre de 20 à 23

    Le site minute et deuxième sont les mêmes que dans l'expression 1 ci-dessus.

    Le lookahead négatif (?! :) est ajouté aux chaînes de saut telles que 20:30:80.

    Comme PM/AM peuvent être soit en majuscules, soit en minuscules, nous rendons la fonction insensible à la casse :

    =RegExpExtract(A5, $A$2, 1, FALSE)

    Nous espérons que les exemples ci-dessus vous ont donné quelques idées sur la façon d'utiliser les expressions régulières dans vos feuilles de calcul Excel. Malheureusement, toutes les fonctions des expressions régulières classiques ne sont pas prises en charge par VBA. Si votre tâche ne peut pas être accomplie avec VBA RegExp, je vous encourage à lire la partie suivante qui traite de fonctions Regex .NET beaucoup plus puissantes.

    Fonction Regex personnalisée basée sur .NET pour extraire du texte dans Excel

    Contrairement aux fonctions RegExp de VBA, qui peuvent être écrites par n'importe quel utilisateur d'Excel, les fonctions RegEx de .NET sont l'apanage des développeurs. Le cadre Microsoft .NET prend en charge une syntaxe d'expression régulière complète, compatible avec Perl 5. Cet article ne vous apprendra pas à écrire de telles fonctions (je ne suis pas un programmeur et je n'ai pas la moindre idée de la manière de le faire :).

    Quatre fonctions puissantes traitées par le moteur standard .NET RegEx sont déjà écrites par nos développeurs et incluses dans Ultimate Suite. Ci-dessous, nous allons démontrer quelques utilisations pratiques de la fonction spécialement conçue pour extraire du texte dans Excel.

    Conseil : pour plus d'informations sur la syntaxe Regex de .NET, veuillez vous référer au langage d'expression régulière de .NET.

    Comment extraire des piqûres dans Excel en utilisant des expressions régulières

    En supposant que vous ayez installé la dernière version d'Ultimate Suite, l'extraction de texte à l'aide d'expressions régulières se résume à ces deux étapes :

    1. Sur le Ablebits Data dans l'onglet Texte cliquez sur Outils Regex .
    2. Sur le Outils Regex sélectionnez les données sources, entrez votre modèle Regex et choisissez l'option Extrait Pour obtenir le résultat sous la forme d'une fonction personnalisée et non d'une valeur, sélectionnez l'option Insérer comme une formule Lorsque vous avez terminé, cliquez sur le bouton Extrait bouton.

    Les résultats apparaîtront dans une nouvelle colonne à droite de vos données originales :

    Syntaxe de AblebitsRegexExtract

    Notre fonction personnalisée a la syntaxe suivante :

    AblebitsRegexExtract(référence, expression_régulière)

    Où :

    • Référence (obligatoire) - une référence à la cellule contenant la chaîne source.
    • Expression_régulière (obligatoire) - le motif regex à faire correspondre.

    Remarque importante : la fonction ne fonctionne que sur les machines sur lesquelles Ultimate Suite for Excel est installée.

    Notes d'utilisation

    Pour faciliter votre apprentissage et rendre votre expérience plus agréable, veuillez prêter attention aux points suivants :

    1. Pour créer une formule, vous pouvez utiliser notre Outils Regex ou la fonction Fonction d'insertion Une fois la formule insérée, vous pouvez la gérer (modification, copie ou déplacement) comme n'importe quelle formule native.
    2. Le motif que vous saisissez sur le Outils Regex passe au deuxième argument. Il est également possible de conserver une expression régulière dans une cellule distincte. Dans ce cas, il suffit d'utiliser une référence de cellule pour le deuxième argument.
    3. La fonction extrait le première correspondance trouvée .
    4. Par défaut, la fonction est sensible à la casse Pour une correspondance insensible à la casse, utilisez le modèle (?i).
    5. Si une correspondance n'est pas trouvée, une erreur #N/A est renvoyée.

    Regex pour extraire une chaîne entre deux caractères

    Pour obtenir du texte entre deux caractères, vous pouvez utiliser un groupe de capture ou des solutions de contournement.

    Supposons que vous cherchiez à extraire du texte entre des parenthèses. Un groupe de capture est le moyen le plus simple.

    Modèle 1 : \[(.* ?)\]

    En regardant derrière et devant soi de manière positive, le résultat sera exactement le même.

    Modèle 2 : (?<=\[)(.* ?)(?=\])

    Veuillez prêter attention au fait que notre groupe de capture (.* ?) effectue une recherche paresseuse pour le texte entre deux crochets - du premier [ au premier ]. Un groupe de capture sans point d'interrogation (.*) ferait un recherche gourmande et capturer tout du premier [ au dernier ].

    Avec le modèle en A2, la formule est la suivante :

    =AblebitsRegexExtract(A5, $A$2)

    Comment obtenir tous les matchs

    Comme nous l'avons déjà mentionné, la fonction AblebitsRegexExtract ne peut extraire qu'une seule correspondance. Pour obtenir toutes les correspondances, vous pouvez utiliser la fonction VBA dont nous avons parlé précédemment. Cependant, il y a une réserve - VBA RegExp ne prend pas en charge la capture des groupes, donc le motif ci-dessus retournera également les caractères "limites", les parenthèses dans notre cas.

    =TEXTJOIN(" ", TRUE, RegExpExtract(A5, $A$2))

    Pour supprimer les parenthèses, SUBSTITUEZ-les par des chaînes vides ("") en utilisant cette formule :

    =SUBSTITUTE(SUBSTITUTE(TEXTJOIN(", ", TRUE, RegExpExtract(A5, $A$2)), "]", ""), "[","")

    Pour une meilleure lisibilité, nous utilisons une virgule comme délimiteur.

    Regex pour extraire le texte entre deux chaînes de caractères

    L'approche que nous avons mise au point pour extraire le texte entre deux caractères fonctionnera également pour extraire le texte entre deux chaînes de caractères.

    Par exemple, pour obtenir tout ce qui se trouve entre "test 1" et "test 2", utilisez l'expression régulière suivante.

    Patronage : test 1(.* ?)test 2

    La formule complète est :

    =AblebitsRegexExtract(A5, "test 1(.* ?)test 2")

    Regex pour extraire le domaine d'une URL

    Même avec des expressions régulières, l'extraction de noms de domaine à partir d'URL n'est pas une tâche triviale. L'élément clé qui fait l'affaire est le groupe de non-capture. En fonction de votre objectif final, choisissez l'une des regex ci-dessous.

    Pour obtenir un nom de domaine complet y compris les sous-domaines

    Patronage : (?:https?\n-)

    Pour obtenir un deuxième niveau domaine sans sous-domaines

    Patronage : (?:https?\n-)

    Voyons maintenant comment ces expressions régulières fonctionnent sur un exemple d'URL type "//www.mobile.ablebits.com" :

    • (?:https ?):
    • \/\/ - deux barres obliques (chacune est précédée d'une barre oblique inverse pour échapper à la signification spéciale de la barre oblique et l'interpréter littéralement).
    • (? :[A-Za-z\d\-\.]{2,255}\.) ? - groupe non capturant pour identifier les domaines de troisième niveau, de quatrième niveau, etc. s'il y en a ( mobile dans notre exemple d'URL). Dans le premier motif, il est placé dans un groupe de capture plus important afin que tous ces sous-domaines soient inclus dans l'extraction. Un sous-domaine peut comporter de 2 à 255 caractères, d'où le quantificateur {2,255}.
    • ([A-Za-z\d\-]{1,63}\.[A-Za-z]{2,24}) - groupe de capture pour extraire le domaine de second niveau ( ablebits ) et le domaine de premier niveau ( com La longueur maximale d'un domaine de deuxième niveau est de 63 caractères. Le plus long domaine de premier niveau existant actuellement contient 24 caractères.

    Selon l'expression régulière saisie en A2, la formule ci-dessous produira des résultats différents :

    =AblebitsRegexExtract(A5, $A$2)

    Regex pour extraire le nom de domaine complet avec tous les sous-domaines :

    Regex pour extraire un deuxième niveau domaine sans sous-domaines :

    Voilà comment extraire des parties de texte dans Excel à l'aide d'expressions régulières. Je vous remercie de votre lecture et j'ai hâte de vous retrouver sur notre blog la semaine prochaine !

    Téléchargements disponibles

    Exemples d'extraits Regex Excel (fichier .xlsm)

    Ultimate Suite version d'essai (fichier .exe)

    Michael Brown est un passionné de technologie passionné par la simplification de processus complexes à l'aide d'outils logiciels. Avec plus d'une décennie d'expérience dans l'industrie de la technologie, il a perfectionné ses compétences dans Microsoft Excel et Outlook, ainsi que dans Google Sheets et Docs. Le blog de Michael est dédié au partage de ses connaissances et de son expertise avec les autres, en fournissant des conseils et des tutoriels faciles à suivre pour améliorer la productivité et l'efficacité. Que vous soyez un professionnel chevronné ou un débutant, le blog de Michael offre des informations précieuses et des conseils pratiques pour tirer le meilleur parti de ces outils logiciels essentiels.