Outils de validation d'expressions régulières
Besoin de mise au point
Lorsque l’on utilise des expressions régulières, on obtient parfois un résultat différent de celui attendu : il faut alors en trouver la raison.
La première chose à faire est de valider les informations manipulées, données traitées et expressions régulières, car avant de conclure qu’une expression régulière n’est pas correctement définie, il faut préalablement s’être assuré qu’à la fois les données et les expressions sont bien conformes à ce qu’elles sont censées être.
Validation des informations
1. Validation des données
Les données à valider sont celles qui sont passées à la fonction ou au programme qui va comparer la chaîne à l’expression régulière.
Si le programme évaluant l’expression régulière est un programme système, tel que grep, awk, expr, ... , on exclura généralement une erreur de la part de ce programme : ce sont des programmes éprouvés, et une erreur provenant d’eux est peu vraisemblable. Au contraire, une erreur lors du passage des données vers ces programmes l’est beaucoup plus. L’idéal est de pouvoir localiser les données qui posent problème, et de tester un cas unitaire, avec le jeu de données le plus réduit possible.
Le travail à effectuer est donc d’isoler les données, en ajoutant des traces permettant de visualiser dans leur totalité les données à traiter.
L’affichage sera réalisé en ASCII ou en hexadécimal pour s’assurer qu’il n’y a pas de caractère caché ou ayant une valeur incorrecte. On utilisera en fonction des besoins :
-
args
-
printf()
-
print
-
ou tout autre programme capable de fournir les informations cherchées.
2. Validation des expressions régulières avant utilisation
Quand les données...
Méthodes de validation des expressions
1. Détermination du type d’expression régulière
Si les données sont correctes, et que l’expression l’est également, il peut y avoir une erreur d’interprétation relative au type d’expression. Il convient donc, avant de choisir l’outil à utiliser, d’identifier s’il s’agit :
-
d’une expression de filtrage comme celles du shell,
-
d’une expression régulière basique,
-
d’une expression régulière étendue, et si oui, de quel type précis il s’agit (POSIX 1003.2, PCRE, PCRE2, RE2, ...).
L’idéal est de valider l’expression avec l’outil cible destiné à l’évaluer, mais dans certains cas un autre outil pourra mettre en évidence le problème plus simplement.
2. Validation d’une expression de filtrage
Si l’expression est destinée à effectuer une sélection de noms de fichiers parmi ceux du système de fichiers, il s’agit généralement d’une expression de filtrage (aussi appelée expression de sélection) destinée aux programmes vus dans le chapitre Synthèse des types d’expression. On pourra alors utiliser l’un des programmes cités pour effectuer la validation.
Dans le cas des shells, le plus simple est de créer un ensemble de fichiers dont les noms sont représentatifs de ceux qu’on veut et ne veut pas sélectionner, et d’exécuter une commande telle que :
echo expression
ou :
args expression
puis d’analyser...
Règles de bonnes pratiques
Dans une grande majorité de cas, les expressions régulières peuvent être comprises facilement lors de leur lecture, et il n’est pas nécessaire de les documenter.
Dans d’autres cas, elles peuvent se révéler extrêmement difficiles à comprendre, voire à déchiffrer. Il est alors temps de demander l’avis d’autres lecteurs potentiels pour s’assurer que le code utilisant l’expression sera maintenable. Si la vue d’une expression impressionne par sa complexité une personne susceptible de maintenir le code, on aura intérêt à en simplifier l’écriture, à documenter l’expression ou à la scinder en traitements plus simples et plus facilement compréhensibles : la création d’expressions de plusieurs centaines de caractères se justifie rarement.