1. Introduction▲
Les expressions régulières permettent de régler les problèmes d'analyse de texte et d'extraction des champs d'une manière simple et élégante. Qui n'a jamais écrit un analyseur pour extraire toutes les parties du nom complet d'un fichier (lecteur, chemin, nom du fichier, extension du fichier) ?
Par contre, il est vrai que la syntaxe d'une expression régulière n'est pas évidente au premier abord. Cela demande un effort d'apprentissage, mais cet effort est très vite compensé par la souplesse et la puissance apportées.
Suite à l'article Utilisation de Boost.Regex, je me suis lancé dans la réalisation d'un programme permettant de créer et tester les expressions régulières en utilisant la bibliothèque C++ Boost.Regex.
Les caractéristiques de ce programme sont les suivantes :
- il fonctionne sous environnement Microsoft Windows ;
- c'est un programme gratuit (freeware) en mode graphique (utilisation des MFC) ;
- il permet de saisir une expression régulière, une chaîne à tester et indique si l'expression régulière correspond avec la chaîne à tester.
Ce document présente :
- la procédure d'installation du programme RegexBuilder ;
- le fonctionnement du programme.
Pour les plus pressés d'entre vous, le programme d'installation se trouve ici : RegexBuilder_Setup.
2. Installation de RegexBuilder▲
Ce paragraphe présente :
- la licence d'utilisation du programme RegexBuilder ;
- l'historique des versions du programme ;
- les plates-formes supportées ;
- la procédure d'installation en détail.
2-1. Licence du logiciel RegexBuilder▲
Sauf mention contraire, la documentation et les binaires inclus dans le logiciel d'installation de RegexBuilder sont protégés par Phoenix Team.
Copyright © 2007-2010 Phoenix Team. Tous droits réservés.
Ce logiciel est fourni « en l'état », sans aucune garantie ni implicite ni explicite. En aucune manière, les auteurs ne pourraient être tenus pour responsables des dommages causés par l'usage de ce logiciel.
Tout le monde a la permission d'utiliser ce logiciel pour quelque usage que ce soit, même commercial, de le modifier et de le redistribuer pourvu que les conditions suivantes soient remplies :
- toute redistribution des codes sources doit conserver, sans modification, la mention de copyright présente ;
- toute redistribution sous forme binaire doit conserver, sans modification, la mention de copyright actuelle ainsi que les adresses de sites web déjà en place (dans la boîte de dialogue « À propos de… », par exemple) ;
- l'origine de ce logiciel ne doit pas être cachée ; vous ne pouvez pas dire que vous avez écrit ce logiciel. Si vous utilisez ce logiciel pour distribuer un produit, un remerciement dans la documentation du produit serait apprécié, mais n'est pas obligatoire ;
- toute version modifiée des sources ou des binaires doit être clairement identifiée et ne doit pas être présentée comme étant le logiciel original.
2-2. Historique des versions▲
2-2-1. Version 1.0 (27 décembre 2009)▲
Nouvelles fonctionnalités
- C'est la première version donc tout est nouveau.
Problèmes corrigés
- Il n'y a pas encore de problèmes identifiés.
2-3. Plates-formes supportées▲
Le programme RegexBuilder doit pouvoir fonctionner sur toutes les plates-formes Microsoft.
Si certaines architectures ne sont pas supportées, n'hésitez pas à l'indiquer dans le post dédié à ce document ici : 11 commentaires. Ce document sera alors complété.
2-4. Procédure d'installation▲
Le programme d'installation (setup) peut être téléchargé ici.
Ce setup se charge d'installer le programme et éventuellement le « package redistribuable Microsoft Visual C++ 2005 (x86) ».
Le setup est réalisé avec le compilateur de setup Innosetup.
Le déroulement de l'installation passe par les étapes suivantes :
|
|
|
|
|
|
|
|
|
|
La procédure d'installation va créer dans le menu Démarrer les entrées suivantes :
- Phoenix Team / RegexBuilder / RegexBuilder : un lien pour lancer l'exécutable ;
- Phoenix Team / RegexBuilder / Uninstall : un lien pour désinstaller le programme ;
- Phoenix Team / RegexBuilder / Documentation : un lien vers cette page WWW ;
- Phoenix Team / RegexBuilder / Phoenix Team WWW site : un lien vers le site de l'auteur ;
- Phoenix Team / RegexBuilder / Boost Regex documentation : un lien vers la documentation officielle de la bibliothèque Boost.Regex.
La procédure d'installation va aussi créer une entrée dans le gestionnaire des logiciels installés afin de permettre sa désinstallation de manière propre.
3. Fonctionnement du programme▲
Ce paragraphe détaille le fonctionnement du programme. L'aspect « syntaxe d'écriture des expressions régulières » n'est absolument pas abordé dans ce document. Il faut se reporter à la documentation officielle de Boost.Regex ou encore d'autres tutoriels sur Internet.
Au lancement du programme, la fenêtre suivante s'affiche :
Le programme montre deux zones de saisie et une zone de résultat.
- La première zone de saisie permet d'entrer une chaîne de caractères à tester.
- La seconde zone de saisie permet d'entrer l'expression régulière.
- La zone de résultat affiche le résultat de l'expression régulière sur la chaîne de caractères à tester.
Dans l'exemple qui est montré :
- la chaîne de caractères à tester est : « <165>May 18 14:46:18 192.168.1.1 Un message Syslog » (il s'agit d'un message au format syslog) ;
- l'expression régulière est « <(\d{1,3})>((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d\d \d\d:\d\d:\d\d) ([^ ]*) (.*) ». C'est une expression régulière qui permet d'extraire le code de facilité, la date, l'adresse IP et le message d'une chaîne de caractères respectant le formalisme syslog ;
- le résultat montre que les quatre champs sont extraits et leurs valeurs sont affichées dans la zone de résultat.
Dans un autre exemple :
- la chaîne de caractères à tester est : « <165>May 18 14:46:18 192.168.1.1 Un message Syslog » (il s'agit du même message syslog) ;
- l'expression régulière est « <\d{1,3}>(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d\d \d\d:\d\d:\d\d [^ ]* .* ». C'est une expression régulière qui permet de vérifier (mais sans extraire cette fois-ci) la présence du code de facilité, de la date, de l'adresse IP et d'un message d'une chaîne de caractères respectant le formalisme syslog ;
- comme il n'y a pas de séquence de capture (à l'aide des caractères parenthèses), aucun résultat n'est extrait, mais le résultat « The input string match the regular expression » est affiché dans la zone de résultat.
Pour des raisons de facilité, la dernière chaîne de caractères à tester de même que la dernière expression régulière utilisée sont toutes les deux sauvegardées dans la base de registres. Ces informations sont récupérées et affichées lors d'un nouveau lancement du programme.
4. Conclusions▲
Le programme RegexBuilder a été réalisé en quelques jours. Il permet de construire et de tester des expressions régulières de manière simple et efficace. Il est écrit en C++, sous environnement Visual Studio 2005 Professional et utilise les MFC. Il utilise aussi la bibliothèque Winlog.
N'hésitez pas à aller sur la page WWW de RegexBuilder pour vérifier si de nouvelles versions sont disponibles et n'hésitez pas non plus à laisser un avis ou une remarque au sujet de ce programme sur le post dédié à cet effet : 11 commentaires. Ce document évoluera aussi en fonction de vos remarques.
Je tiens à remercier Wachter pour ses conseils avisés lors de la relecture de ce tutoriel.