Les expressions rationnelles (regex)

Introduction

Aujourd’hui, nous allons vous présenter les expressions rationnelles, aussi appelées expressions régulières ou tout simplement regex (contraction de regular expression). Qu’est-ce donc ? C’est un outil puissant, mais pas toujours intuitif, notamment du fait d’une syntaxe assez abstruse, pour manipuler un texte, quel qu’il soit.

Imaginez qu’après avoir bouclé votre thèse, tout près de l’échéance, vous vous apercevez que toutes vos dates au format américain doivent être mises au format français, ou que les caractères chinois doivent être mis dans un style calligraphique, loin de la police par défaut, et cela sur 500 pages… Et si vous ne passez pas vos journées sur de la rédaction d’articles, imaginez qu’après de longues recherches, vous retrouvez des milliers de lignes de données textuelles dans un vieux format douteux, mais que vous devez les remettre d’aplomb pour les valoriser auprès de vos confrères dans un format interopérable…

Utiliser une expression rationnelle vous permettra de faire ces modifications très rapidement et de manière bien plus sûre que le simple rechercher/remplacer habituel de votre éditeur de texte favori.

Les développeurs informatiques connaissent généralement suffisamment bien cet outil, mais il gagnerait à être plus connu en dehors de ce domaine, puisqu’il s’agit d’un outil très utile aussi en édition, et en fait dans tous les domaines où l’on doit manipuler du texte (vérification, recherche ou modification).

Ce court article est là pour présenter les possibilités qu’offrent les expressions rationnelles, il ne s’agit pas d’un tutoriel (la Toile en regorge…), mais de quelques illustrations variées pour tenter de démontrer leur utilité.

Tout d’abord, si vous écrivez vos textes avec un logiciel (traitement de texte, publication assistée par ordinateur, etc.), il est possible que certaines modifications soient automatisées ou préconfigurées pour un appel ponctuel rapide. Dans tous les cas, certains logiciels permettent d’avoir accès à ces outils (parfois sous d’autres noms, comme grep sur InDesign). Il est aussi possible d’installer des extensions pour cela sur vos navigateurs, si vous avez besoin de faire des recherches plus fines sur la Toile.

Contexte

Dès lors que vous devez faire une recherche ou une modification d’une expression non littérale (comme pourrait l’être un caractère précis), mais sur une expression composée d’éléments abstraits ou variables, possédant une certaine logique, nous allons devoir utiliser un modèle (ou motif, une formule décrivant l’expression rationnelle ; en anglais pattern). Ce modèle permettra d’utiliser des caractères particuliers pour désigner par exemple des ensembles (tous les chiffres, toutes les lettres, etc.), leur nombre d’occurrences, leur structure, les éléments nécessaires, facultatifs, etc.

Plus généralement, dès que vous avez besoin de trouver un modèle de texte précis, ou de modifier un modèle par un autre, plusieurs choix s’offrent à vous :

Illustrations

Conversion du séparateur décimal

Vous désirez convertir des nombres décimaux en modifiant le séparateur (virgule en français, point en anglais, notamment).

Unifier des espaces

Vous désirez unifier les espaces, c’est-à-dire ramener à l’unité ces espaces successives (terme féminin en typographie) parfois hétérogènes (espaces simples, insécables, tabulation…).

Ajout d’espace insécable devant des ponctuations doubles

Vous désirez ajouter en français une espace fine insécable devant certaines ponctuations doubles (l’orthotypographie est un peu plus complexe, mais c’est un exemple).

Convertir des formats de date

Vous désirez convertir des dates à l’américaine (mois/jour/année) en dates à la française (jour/mois/année).

Rechercher des scripts particuliers

Vous désirez trouver des caractères plus particuliers, notamment dans un texte multilingue.

Formater un segment de texte en XML

Si vous désirez formater un segment de texte qui suit une certaine logique (plus ou moins variable) au format XML, par exemple transformer le segment suivant (comportant quelques caractères combinants) :

fra     endurer     /ɑ̃.dy.ʁe/     [ɒ̃d̪yˈʁe]

en un bloc XML de cette forme :

<mot langue="fra">
  <orthographe script="lat">endurer</orthographe>
  <phonologie script="api">ɑ̃.dy.ʁe</phonologie>
  <phonétique script="api">ɒ̃d̪yˈʁe</phonétique>
</mot>

Quelques explications

L’usage de la barre oblique inversée (antislash en anglais) signifie que le caractère qui suit est à prendre dans un sens particulier… Comme dans ce langage, il existe des caractères spéciaux, appelés opérateurs (ou métacaractères) – par opposition aux caractères littéraux –, comme ce + qui n’est pas le caractère « + » mais un quantificateur (un type d’opérateur) simple (stipulant que l’expression qui précède doit être présent au moins 1 fois), ou bien ce . qui est le caractère joker (n’importe quel caractère), il est nécessaire d’ajouter devant eux ce \ pour les distinguer des caractères littéraux. Ainsi, \+ signifie littéralement « + », de même que \. signifie littéralement « . ». Néanmoins, ce n’est pas si simple, car nous avons aussi vu dans ce petit exemple que \d ne signifie pas littéralement « d ». La règle du \ change pour désigner ces classes de caractères, et là la lettre qui suit est un moyen mnémotechnique (pour les anglophones…) de savoir à quelle classe de caractères il fait référence.

Présentons quelques opérateurs utiles (pour la plupart vus lors des illustrations) :

Remarques

Il existe encore de nombreuses fonctionnalités, comme des conditions variées (« seulement si telle expression existe avant ou après », etc.), des récursions…

Notons qu’il existe différents moteurs d’expressions rationnelles, avec des différences parfois significatives entre eux (mais il existe quand même une très bonne base commune, rassurez-vous !), et les logiciels incluant cet outil auront généralement choisi un de ces moteurs, sans d’ailleurs forcément y avoir inclus toutes les fonctionnalités de ce dernier (qui peuvent aller très loin…).

Un bon site que je conseille pour tester ses expressions rationnelles est regex101.com. Il permet de tester les expressions, avec différents moteurs, d’avoir des informations colorées, des indications explicites, etc. ! Pour les plus curieux, une bonne référence reste regular-expressions.info !

Conclusion

Voilà pour cette présentation succincte. Son intérêt était de montrer à des profanes qu’un outil puissant se cache parfois dans leurs logiciels quotidiens, ou qu’il est aisément disponible (site, éditeur de texte…). Je ne m’attends évidemment pas à ce que vous puissiez l’utiliser comme si c’était votre langue maternelle dès la fin de la lecture de ce mini-article, mais si l’existence de ce formidable outil reste dans un coin de votre mémoire et que vous vous en souvenez le jour où il pourra vous être utile, alors cet article aura joué son rôle !