Au secours, ma regex ne marche pas !

Les expressions régulières sont des outils très puissants et commodes pour manipuler du texte, mais il faut bien reconnaître qu’on peut parfois se noyer dans leur syntaxe ésotérique. Heureusement il existe des petits logiciels, gratuits pour la plupart, qui permettent de visualiser la correspondance entre les chaînes de caractères (i.e. le texte) qu’on veut analyser et l’expression régulière qu’on y applique.

Leur principe est simple: on indique le texte-cible, la regex, ainsi que la syntaxe qu’on utilise, puis le logiciel colore les éléments du texte qui correspondent aux éléments repérés dans la regex par des parenthèses (pour rappel, les parenthèses servent à désigner des morceaux du texte qu’on veut garder en mémoire pour réutiliser après). On en présente quelques-uns, pour plusieurs plate-formes, afin de montrer l’étendue des fonctionnalités disponibles. L’offre est fournie et en renouvellement assez rapide, donc on ne peut être exhaustif.

Pour cette présentation, on reprend les chaînes de caractères utilisées dans ce billet précédent.

Sur le web

Les applications web sont accessibles de tout ordinateur, à condition bien sûr d’avoir un accès internet. Il en existe un très grand nombre, probablement des projets d’étudiants en informatique. On en présente deux, qui sortent du lot par leurs fonctionnalités et leur design.

Regex101 est de notre point de vue le meilleur. Il permet de travailler avec la syntaxe PCRE, utilise des couleurs lisibles, et offre même une analyse détaillée des morceaux de la regex ainsi qu’une référence de la syntaxe. L’interface peut apparaître un peu lourde au premier abord, mais on s’y fait vite.

regex101

Le principe est d’écrire sa regex dans le champ “regular expression”, les chaînes de caractères que l’on veut tester dans “test string”. Il faut également s’assurer de deux réglages: premièrement qu’on travaille bien avec la syntaxe PCRE (cliquer dans la colonne de gauche), et que les lignes seront analysées comme des chaînes de caractères indépendantes (écrire un “g” à la suite de la regex). On obtient alors, dans la colonne de droite, tout d’abord l’explication des motifs composant la regex, puis ce qui est trouvé comme correspondant aux parenthèses dans la regex et mis en mémoire. En utilisant des patterns plus complexes, les couleurs sont différentes pour les parenthèses distinctes. Il est alors facile de repérer les éventuelles erreurs dans l’écriture de l’expression régulière.

On peut aussi tester le remplacement avec Regex101, en cliquant sur le “+” en bas de l’écran, près de “Substitution” (cf. image ci-dessus). Un champ s’ouvre, on peut y écrire ce par quoi on voudra remplacer la chaîne de caractères correspondant à la regex (comme, en R, dans gsub(pattern, remplacement, vecteur)). Le résultat apparaît dans le champ en-dessous.

En complément, Debuggex offre une fonctionnalité originale, celle de représenter la regex par un diagramme qui en sépare les morceaux. On peut ainsi mieux comprendre ce qui se passe, et repérer les fautes de frappe ou de composition. Il s’agit d’une représentation graphique de ce que Regex101 affiche, sous forme de texte, dans son cadre “Explanation” en haut à droite.

Pour l’utiliser, il faut utiliser les réglages suivants. Tout d’abord sélectionner l’option “Flags: m”, qui permet d’analyser toutes les lignes du texte (et pas seulement la première). Concernant le choix de la syntaxe, il faudrait choisir “PCRE”, mais au moment de l’écriture de ce billet cette option comporte un bug au niveau de la coloration des résultats ; le mieux est d’opter pour la syntaxe de regex “Javascript”, qui est proche, et pour laquelle Debuggex n’a pas ce bug (!). Ensuite, on peut écrire sa regex et les chaînes de caractères qu’on veut analyser, et les résultats sont la coloration des chaînes de caractères qui correspondent à la regex et aux parenthèses, ainsi que la représentation graphique de la regex (cf. capture d’écran).

debuggex

On peut cependant avoir besoin de tester ses regex dans le train, la jungle ou tout autre endroit sans connexion. Pour couvrir ces cas, des logiciels existent.

Sur ordinateur

Il y a d’abord les nombreux petits logiciels gratuits et efficaces pour tester ses regex. Sous Mac OS, Reginald est un bon choix, gratuit et récent. Il utilise la syntaxe ICU, proche de PCRE, et avec laquelle fonctionne le package stringi en R. Sous Windows, les choix équivalents de petits utilitaires ne manquent pas.

Pour des besoins plus poussés, la référence est RegexBuddy, disponible sous Windows, ou en utilisant un émulateur comme Wine sous Mac OS et très probablement Linux. Il est payant et a un look vintage, mais il est diaboliquement riche (peut-être même trop pour une utilisation en sciences sociales). On peut l’utiliser comme les précédents, et il fonctionne parfaitement pour tester les recherches et le remplacement, et ce avec une très grande variété de choix de syntaxe. Mais en plus de cela il propose des fonctions d’explication d’une regex, de debugging, ou encore de création d’une regex pas à pas, et beaucoup d’autres choses. Il est trop foisonnant pour qu’on en détaille le fonctionnement ici, mais l’interface est plus intuitive qu’elle n’en a l’air au premier abord (les onglets “Test” et “Highlight”, ainsi que “Create”, suffisent pour reproduire les fonctions proposées par les autres logiciels présentés ici). Au passage, on peut signaler, du même éditeur, RegexMagic qui permet également de créer des regex, mais avec une approche différente. On ne l’a pas testé, mais il semble adapté pour l’écriture de regex complexes.

Voilà, avec ça normalement vous êtes armés !



Citer ce billet
Alexandre Hobeika (2015, 28 décembre). Au secours, ma regex ne marche pas ! Data Sciences Sociales. Consulté le 14 mars 2024, à l’adresse https://doi.org/10.58079/ngya

Alexandre Hobeika

Docteur en sociologie politique de l'EHESS, CMH-ETT

More Posts - Website

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.