| Bulgarian English French
GermanRussian Spanish |
| A propos | Installation | Syntaxe | Interface | FAQ | Demos | Auteur |
|
Comment ça Fonctionne
Simple illustrations Si vous n'êtes pas familier avec les expressions régulières, svp, aller au sujet syntaxe. Utiliser les routines globales C'est simple mais pas une façon flexible et pratique.
Utiliser la classe TRegExpr Vous avez tout le pouvoir de la librairie. // Cette simple fonction extrait tous les e-mail de la chaîne d'entrée. // et place la liste de tous les e-mail dans la chaîne sortante. function ExtractEmails (const AInputString : string) : string; const EmailRE = '[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+' var r : TRegExpr; begin Result := ''; r := TRegExpr.Create; // Crée L'objet try // s'assure de la relâche de mémoire en cas d'erreurs d'exceptions. r.Expression := EmailRE; // Assigne le code source à l'e.r. Il sera compilé quand ce sera nécessaire // (par exemple quand Exec sera appelé). S'il y a des erreurs dans l'e.r. // Des exceptions seront levées durant la compilation de l'e.r. if r.Exec (AInputString) then REPEAT Result := Result + r.Match [0] + ', '; UNTIL not r.ExecNext; finally r.Free; end; end; begin ExctractEmails ('My e-mails is anso@mail.ru and anso@usa.net'); // retourne 'anso@mail.ru, anso@usa.net, ' end. // Noter: La compilation de l'e.r. durant l'attribution de l'expression // prend quelque temps , si vous voulez utiliser cette fonction plusieurs fois // ce sera du travail inutile... // Pour l'optimiser de façon significative, créer TRegExpr // et précompiler l'expression durant la phase d'initialisation du programme. // Ce simple exemple extrait les numéros de téléphone et // l'analyse en partie (code régional, ville, numéro interne). // Ensuite il substitut les parties en gabarit. function ParsePhone (const AInputString, ATemplate : string) : string; const IntPhoneRE = '(\+\d *)?(\(\d+\) *)?\d+(-\d*)*'; var r : TRegExpr; begin r := TRegExpr.Create; // Crée l'objet try // s'assure de la relâche de mémoire en cas d'erreurs d'exceptions. r.Expression := IntPhoneRE; // Assigne le code source à l'e.r. Il sera compilé quand nécessaire // (par exemple quand Exec sera appelé). S'il y a des erreurs dans l'e.r. // Des exceptions seront levées durant la compilation de l'e.r. if r.Exec (AInputString) then Result := r.Substitute (ATemplate) else Result := ''; finally r.Free; end; end; begin ParsePhone ('Phone of AlkorSoft (project PayCash) is +7(812) 329-44-69', 'Zone code $1, city code $2. Whole phone number is $&.'); // retourne 'Code Régional +7, Code de Ville (812) . Téléphone complet +7(812) 329-44-69.' end. Ilustrations plus complexes Vous pouvez trouver des illustrations plus complexes pour utiliser TRegExpr dans le projet TestRExp.dpr et HyperLinkDecorator.pas. Voir aussi mon petit article à Delphi3000.com (en Anglais) et Delphi Kingdom (en Russe). Explication plus détaillée Svp, voir la description d'interface de TregExpr. |
![]() |