Warning: filemtime(): stat failed for /home/developpez/www/developpez-com/upload/sjrdhttp://www.developpez.com/template/kit/article.css in /home/developpez/www/developpez-com/template/entete.php on line 405
IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Expressions régulières avec Delphi XE

Date de publication : 13 septembre 2010

Par Sébastien Doeraene (sjrd.developpez.com)
 

Delphi XE est sorti ! Parmi les nouveautés dans la RTL de cette version, on trouve le traitement, enfin intégré, des expressions régulières. Cet article vous propose de les découvrir.

       Version PDF (Miroir)   Version hors-ligne (Miroir)
Viadeo Twitter Facebook Share on Google+        



I. Introduction
II. Premier exemple très simple


I. Introduction

Les expressions régulières sont un concept bien connu depuis de longues années pour le traitement des chaînes de caractères. Beaucoup de tests récurrents, comme le format valide d'une adresse e-mail ou d'un numéro de téléphone, peuvent être vérifiés très aisément avec les expressions régulières.

De nombreux langages proposent depuis longtemps des routines de gestion des expressions régulières dans leur bibliothèque standard, voire dans le langage lui-même. On citera par exemple Perl, exemple phare, ou PHP.

Jusqu'ici, les Delphistes devaient utiliser des bibliothèques tierces, excellentes au demeurant. À présent, on peut enfin trouver son bonheur dans la RTL, directement.

Cet article vous expliquera comment vous servir de cette nouvelle API.


II. Premier exemple très simple

Commençons avec un petit exemple très simple, qui représente par ailleurs bien les 80 % de cas d'utilisation des expressions régulières : tester si une chaîne correspond à une regexpr.

Posons deux edits et un bouton sur une fiche, comme ceci :

Fiche simple pour tester une regexpr
Et voici le code de l'événement OnClick du bouton :

procedure TFormTestRegExpr.ButtonTestRegExprClick(Sender: TObject);
var
  RegExpr: TRegEx;
begin
  RegExpr := TRegEx.Create(EditRegExpr.Text);

  if RegExpr.IsMatch(EditText.Text) then
    ShowMessage('Le texte correspond à l''expression régulière')
  else
    ShowMessage('Le texte ne correspond PAS à l''expression régulière');
end;
			
En n'oubliant pas, au passage, d'ajouter l'unité RegularExpressions aux uses de l'unité en cours.

Ce code est très simple. Il crée un record de type TRegEx qui représente l'expression régulière. TRegExpr est un type record avancé, qui englobe toutes les méthodes que l'on peut appliquer à une regexpr.

La méthode IsMatch de TRegEx teste simplement si un texte quelconque correspond à l'expression régulière représentée.

Ce petit programme, aussi simple soit-il, est déjà bien intéressant. Il permet de tester facilement une expression régulière en développement. Lancez-le, et introduisez l'expression régulière suivante :
^[a-zA-Z_][a-zA-Z_0-9]*$
Si vous n'avez encore jamais utilisé d'expression régulière, ce "code" peut vous paraître bien cryptique. Nous allons bientôt remédier à cela. En attendant, sachez simplement que cette regexpr teste si une chaîne est un identificateur Delphi valide. À savoir, une chaîne qui commence par une lettre non accentuée ou un underscore, suivi d'un nombre quelconques de lettres, chiffres et/ou underscores.

Introduisez quelques valeurs dans le memo Texte, et cliquez sur le bouton pour tester.



               Version PDF (Miroir)   Version hors-ligne (Miroir)

Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in /home/developpez/www/developpez-com/upload/sjrd/delphi/tutoriel/expressions-regulieres-avec-delphi-xe/index.php on line 146

Warning: include(http://sjrd.developpez.com/references.inc): failed to open stream: no suitable wrapper could be found in /home/developpez/www/developpez-com/upload/sjrd/delphi/tutoriel/expressions-regulieres-avec-delphi-xe/index.php on line 146

Warning: include(): Failed opening 'http://sjrd.developpez.com/references.inc' for inclusion (include_path='.:/opt/php56/lib/php') in /home/developpez/www/developpez-com/upload/sjrd/delphi/tutoriel/expressions-regulieres-avec-delphi-xe/index.php on line 146

Valid XHTML 1.0 TransitionalValid CSS!

Copyright © 2010 Sébastien Doeraene. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.