IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Regex - mon premier essai bien laborieux


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 81
    Par défaut Regex - mon premier essai bien laborieux
    Bonjour

    N'ayant pas trouvé beaucoup de doc pour lazarus concernant les expressions régulières, je me suis hasardé à faire un petit essai que voici :

    J'ai utilisé l'unité RegexPr

    Il semble fonctionner correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
      StdCtrls, regexpr;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        Button1: TButton;
        Edit2:   TEdit;
        Memo1:   TMemo;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    { TForm1 }
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      reg: TRegExprEngine;
      index, len, i: integer;
    begin
      reg := GenerateRegExprEngine(PChar(Edit2.Text), [ref_singleline]);
      if (RegExprPos(reg, PChar(memo1.Text), index, len)) then
      begin
        ShowMessage('oui le regex est bon');
      end
      else
      begin
        ShowMessage('non le regex n''est pas bon');
      end;
      DestroyRegExprEngine(reg);
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Memo1.Text := 'Coucou';
      edit2.Text := '^c';
    end;
     
    initialization
      {$I unit1.lrs}
     
    end.
    C'est vraiment comme ceci que vous feriez ?
    Ou puis-je trouver de la doc supplementaire ?

    J'ai vu qu'il y avait un composant Regex au lieu de RegexPR que j'utilise ici, y a t-il un ++ a utiliser l'un plutôt que l'autre ?

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 81
    Par défaut
    Je viens de découvrir une autre Unité qui s'appelle SynRegexPr.
    Mes investigations s'arreteront là, je viens d'adopter mon bébé

    Dans Lazarus xp, il y a un exemple d'utilisation que l'on peut trouver dans le fichier /ide/codetemplatesdlg.pas

    Pour faire simple en voici un exemple concret :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
      SynRegExpr;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    { TForm1 }
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      re: TRegExpr;
    begin
      re := TRegExpr.Create;
      re.Expression := '^c';
      if (re.Exec('Coucou')) then
      begin
        ShowMessage('Oui');
      end
      else
      begin
        ShowMessage('non');
      end;
      re.Free;
    end;
     
    initialization
      {$I unit1.lrs}
     
    end.
    J'ai un peu parlé tout seul sur ce thread mais bon si quelqu'un galère a mettre en oeuvre les regex avec Lazarus, Il ya maintenant 2 petits exemples concrets.

Discussions similaires

  1. Je bloque sur mon premier essai avec ANT
    Par Invité dans le forum ANT
    Réponses: 2
    Dernier message: 15/12/2010, 00h27
  2. [JSF] mon premier JSF:Cannot find FacesContext
    Par anitshka dans le forum JSF
    Réponses: 15
    Dernier message: 24/08/2007, 18h19
  3. [Débutant] Mon premier programme: rien ne va...
    Par vincent0 dans le forum OpenGL
    Réponses: 10
    Dernier message: 02/08/2005, 13h59
  4. [JSF] mon premier custom component
    Par anitshka dans le forum JSF
    Réponses: 5
    Dernier message: 14/06/2005, 13h31
  5. [debutant]Mon premier prog OpenGL
    Par Revan777 dans le forum OpenGL
    Réponses: 5
    Dernier message: 04/04/2005, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo