Guide rapide des expressions régulières

Pour G Suite et Office 360 utilisateurs, et pour les développeurs Python

(Badi James) (20 mai 2020)

Le langage est rarement simple à utiliser lors de lextraction dinformations. Même la tâche de trouver et de compter le nombre de fois quun mot apparaît dans un corps de texte, une tâche qui semble à première vue être simple à faire avec des traitements de texte et des bibliothèques de codage modernes, peut rapidement se compliquer.

Prenons lexemple dessayer de trouver si le ciel est mentionné dans un corps de texte. Lapproche simple serait de simplement:

  • Ctrl + F «ciel» (si vous utilisez un éditeur de texte ou un traitement de texte)
  • «ciel» dans body\_of\_text (si vous écrivez un script en python)

Cependant, les deux approches ne trouveront pas toujours des mentions du ciel, et donneront parfois des faux positifs. Les limites de ces approches viennent de la manière dont elles recherchent la séquence exacte des caractères s-k-y. Voici quelques caractéristiques du langage qui feront échouer cette approche:

  • Capitalisation: si une phrase commence par « Sky » ou « Sky » apparaît comme faisant partie dun nom propre (ou si le lauteur du texte avait une touche de verrouillage des majuscules cassée) ces apparences du mot ne seront pas trouvées.
  • Orthographe dautres mots: La présence de mots tels que « pe ciel « , » ri ciel « , etc. « Ciel » à être détecté à tort.
  • Pluriels: « Skies » ne sera pas détecté.

De nombreux traitements de texte et éditeurs de texte ont des options disponibles dans leur « Rechercher et Remplacer »pour résoudre les deux premiers problèmes ci-dessus. En fait, les options telles que «Ignorer la casse» et «Faire correspondre tout le mot» sont généralement activées par défaut. Cependant, la question de labsence de formes alternatives dun mot (pluriels, temps, genre, etc.) ou dorthographes alternatives (par exemple les nombreuses variantes du nom Mohammad) sera toujours présente.

Avec Python, vous pouvez développer votre ligne de code search\_phrase in body\_of\_text en ajoutant des conditions pour couvrir toutes les variantes du mot et pour exclure les fausses correspondances positives. Mais cela peut être pénible à faire et peut rendre votre code pour cette tâche supposée simple longue et difficile à maintenir.

Saisir des expressions régulières

Les expressions régulières (ou regex en abrégé) sont des outils puissants pour trouver des modèles de caractères dans le texte. Lidée est quau lieu de donner à votre code ou à votre traitement de texte une séquence spécifique de caractères à rechercher, vous lui donnez un modèle (une expression régulière) qui décrit les règles que vous souhaitez utiliser pour élargir ou restreindre les segments du texte qui correspondent le modèle donné.

La spécification de ces règles est obtenue en ajoutant des caractères spéciaux à votre expression régulière. Prenons lexemple ci-dessus du «ciel». Une expression régulière de «\ bsk (y | ies) \ b» correspondra à la fois à «sky» et «skies», mais ne correspondra pas à «embêtant», «risqué» ou à tout autre mot contenant s-k-y. Décrivons le but de chacun des caractères spéciaux que nous avons ajoutés:

Le« \ b »qui flanque chaque extrémité de notre expression spécifie les limites des mots, cest-à-dire les espaces blancs, la ponctuation, le début ou la fin du texte, etc. Cest ce qui empêche lexpression régulière de correspondre aux autres les mots où «ciel» fait partie de lorthographe (comme «embêtant» ou «Skype»).

Les parenthèses créent un groupe de capture. Ceci est utilisé pour spécifier à quelle partie de votre regex vous souhaitez appliquer une règle spécifique. Dans ce groupe de capture, nous avons le « | » (aka la barre verticale). Ceci agit comme un opérateur OR, spécifiant que lexpression à gauche («y») ou lexpression à droite («ies») peut faire partie dune correspondance. Cela permet à notre expression régulière de faire correspondre à la fois le singulier «ciel» et le pluriel «ciel».

Pour résoudre le problème de la capitalisation, il sagit généralement dun non-problème car loption «Ignorer la casse» dans la recherche Les fonctions de la plupart des traitements de texte et des éditeurs de texte peuvent également être utilisées lors de la recherche à laide de lexpression régulière. Lors de lutilisation de la bibliothèque Python regex re, lindicateur e IGNORECASE peut être utilisé lors de la recherche via regex (plus dinformations à ce sujet plus tard). Cependant, sans cette option ou ce drapeau, nous pouvons faire correspondre « Sky », « sky », « Skies » et « skies » en augmentant notre regex comme tel: « \ b (S | s) k (y | ies) \ b »

Comme vous pouvez le voir, les expressions régulières ont rendu notre recherche du ciel beaucoup plus fructueuse! Cependant, cétait un exemple relativement simple de ce que les regex peuvent faire. Voici quelques autres exemples qui démontrent la puissance et la polyvalence des expressions régulières:

  • M (u | o) hamm? (E | a) (d | t) correspond le plus variantes orthographiques de Mohammad
  • (? Mountain) Bike correspond Bike mais pas Mountain Bike
  • café (?! date) correspond à café mais pas date café
  • (https: \ / \ /)? (www \.)? [a- z0–9] + \. [az] + (\. [az] +)? correspond à de nombreuses URL
  • [a-zA-Z0–9 -\_.] + @ [a-zA-Z] + \. [a-zA-Z] + ( \. [a-zA-Z] +)? correspond à de nombreuses adresses e-mail

regexr.com: un excellent site Web pour apprendre lexpression régulière

Les exemples décrits précédemment vous ont peut-être fait penser « cela semble utile, mais comment vais-je me souvenir de toutes les différentes personnages et que font-ils? Et comment puis-je savoir si mon expression régulière fonctionne comme prévu? ». Ne vous inquiétez pas, regexr.com est là pour vous aider.

Sur ce site Web, vous pouvez créer des expressions régulières en utilisant les feuilles de triche fournies comme guides, et collez du texte pour les tester. Toutes les correspondances seront mises en évidence dans le texte et un décompte des correspondances sera affiché. Votre expression régulière est codée par couleur et des conseils pratiques décrivent ce que fait chaque personnage lorsque vous passez votre souris dessus. Cest idéal pour apprendre les regex à laide de regex.

Utiliser Regex dans Google Docs et Google Sheets

Lutilisation de Regex dans ces applications G Suite est simple et conviviale. Appuyez simplement sur Ctrl + F, puis cliquez sur les trois points verticaux dans la zone de recherche qui apparaît dans le coin supérieur gauche du navigateur. Vous pouvez également accéder à Modifier -> Rechercher et remplacer dans les menus déroulants. Cela ouvre la fenêtre Rechercher et remplacer. Vous trouverez ici la case à cocher Correspondance avec des expressions régulières (Docs) ou Recherche avec des expressions régulières (Sheets). Une fois sélectionnée, vous pouvez coller votre expression régulière dans le champ Rechercher . Toutes les correspondances seront mises en évidence dans votre document et un nombre de correspondances saffichera dans le champ Rechercher . Vous pouvez toujours utiliser les autres options de recherche et de remplacement disponibles, telles que Respecter la casse, et votre expression régulière se comportera en conséquence.

Utilisation de «Regex» (caractères génériques) dans MS Word et Excel

Malheureusement, les expressions régulières ne sont pas prises en charge dans Word et Excel. Cependant, ils autorisent les «caractères génériques», qui se comportent à peu près de la même manière, bien que les symboles utilisés soient parfois différents.

Dans Word, la recherche à laide de caractères génériques peut être effectuée à laide de la fonction Recherche et remplacement avancés. Vous trouverez des détails sur la façon daccéder à cette fonctionnalité, comment activer les caractères génériques et ce que fait chaque caractère générique dans ce guide disponible sur le site Web de support Office.

Dans Excel, il nest pas immédiatement évident de rechercher à laide de caractères génériques car cela ne fait partie daucune fonctionnalité de recherche. Cependant, vous pouvez trouver des cellules correspondant à votre phrase de recherche contenant des caractères génériques en filtrant vos feuilles à laide de filtres avancés. Suivez ce guide sur le site Web de support Office où vous pouvez trouver comment utiliser des caractères génériques dans le cadre de vos filtres avancés sous « Critères génériques ».

Où accéder aux filtres avancés dans Excel, qui permettent lutilisation de caractères génériques

Utilisation de regex en Python

Le re est fournie dans le cadre de linstallation de base de Python. Cette bibliothèque fournit de nombreuses fonctions qui vous permettent danalyser et de manipuler des chaînes à laide dexpressions régulières.

Quelques fonctions clés sont:

  • re.search ( modèle, chaîne, indicateurs = 0 ) : Ceci recherche le premier emplacement dans chaîne motif (votre expression régulière) correspond, renvoyant un objet de correspondance décrivant la correspondance, ou Aucune si aucune correspondance nest trouvée.
  • re.match ( modèle , string, flags = 0 ) : se comporte comme re.search (), sauf quil ne recherche que les correspondances commençant au début de string
  • re.split ( modèle, chaîne, indicateurs = 0 ): Splits string dans une liste par correspondance avec pattern , comme la méthode str.split () mais avec regex.
  • re.sub ( modèle, repl, chaîne, count = 0, flags = 0 ): Remplacez les occurrences de pattern dans string par repl, si repl est une chaîne, ou par la sortie de repl si repl est une fonction qui prend un seul objet de correspondance comme argument

Le paramètre flags permet vous devez spécifier des indicateurs tels que re.IGNORECASE qui modifient le comportement de vos modèles de regex en conséquence.

Lorsque vous écrivez vos modèles dexpression régulière sous forme de chaînes en python, il est utile dutiliser des chaînes brutes, car elles vous permettent dutiliser des caractères spéciaux tels que «\» sans avoir à les échapper. Par exemple, au lieu de:

  • pattern = « \\ bsk (y | ies) \\ b »

Utilisez:

  • pattern = r ”\ bsk (y | ies) \ b”
Un exemple de la documentation relative à lutilisation de regex avec une recherche positive

Documentation complète pour re bibliothèque peut être trouvée ici: https://docs.python.org/3/library/re.html # module-re

Bonne correspondance !!

Comme vous pouvez le voir, les expressions régulières peuvent rendre beaucoup de tâches beaucoup plus faciles lorsque vous travaillez avec du texte. Même lapprentissage de quelques caractères spéciaux peut permettre de nouvelles utilisations des outils Rechercher et remplacer. De nombreux traitements de texte et éditeurs de texte ont reconnu leur utilité et ont permis la prise en charge des expressions régulières, ou ont implémenté leurs propres fonctionnalités pour fournir des fonctionnalités similaires. La familiarité avec les expressions régulières est un outil pratique dans la boîte à outils pour tout écrivain, développeur de logiciel ou toute personne qui analyse souvent du texte.

AI Palette aide les entreprises de FMCG à innover dans leurs produits. Nous utilisons lintelligence artificielle & Machine Learning pour aider les entreprises de grande consommation à créer des produits gagnants pour les consommateurs.