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 :

Problème de regex


Sujet :

Lazarus Pascal

  1. #1
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 195
    Points
    195
    Par défaut Problème de regex
    Bonjour

    J'ai essayé d'utiliser l'unité regex proposée ici et je rencontre des problèmes.



    Qui utilise des regex avec Lazarus parmi vous ?

  2. #2
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Bonjour,

    Si vous souhaitez des réponses, il faudrait poser une question plus précise . Pouvez-vous indiquer les problèmes rencontrés avec des exemples de code qui ne fonctionnent pas ?

    Cordialement,

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  3. #3
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 195
    Points
    195
    Par défaut
    Bonjour

    En 1er, j'essaye avec l'unité regexpr de laza

    Code pascal : 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
     
        program Project1;
        {$mode delphi }{$H+}
        uses
          RegExpr;
        var
          R:TRegExpr;
        begin
          R := TRegExpr.Create;
          try
            R.Expression:= '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$';
            writeln(R.Exec('Abcd1234'));
          finally
            R.Free;
          end;
        end.

    A l’exécution j'ai une exception sur un caractère non reconnu position 11. Bizarre, sur le forum US JurassicPork arrive à le faire fonctionner....

    Dans un second essai j'essaye avec l'unité de beRo
    Code pascal : 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
     
    program match1;
    {$I DIRECTIVES}
     
    uses
      SysUtils,
      Classes,
      FLRE in '..\src\FLRE.pas';
     
    var
      e: TFLRE;
      c: TFLRECaptures;
      s: TFLRERawByteString;
     
    begin
      s := 'Abc1234';
     
      e := TFLRE.Create('^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$', []);
      try
        WriteLn(e.Match(s, c));
        WriteLn(Copy(s, c[0].Start, c[0].Length));
      finally
        e.Free;
      end;
      ReadLn;
    end.

    qui retourne FALSE.

  4. #4
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 195
    Points
    195
    Par défaut
    Du coup, je viens de me souvenir qu'ici aussi nous avons JurassicPork, c'est le même ???

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    Citation Envoyé par mtournay Voir le message
    Du coup, je viens de me souvenir qu'ici aussi nous avons JurassicPork, c'est le même ???
    il se pourrait bien que ce soit le même

    As-tu bien lu tous mes messages du forum en angliche :
    Dans le premier message j'explique pourquoi on ne peut pas utiliser la syntaxe (?= avec TRegexpr et FLRE
    J'ai utilisé les deux fonctions proposées par Engkin pour faire mes tests. Il utilise une autre syntaxe pour le TRegexpr et il utilise BRRE au lieu de FLRE.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 195
    Points
    195
    Par défaut
    Bonjour JP

    Je crois que je vais utiliser BRRE, mais

    1. je cherche à savoir pourquoi il plante en mode debug....
      BeRo sur la page github de son unité précise 'but please, disable the buggy DFA stuff at BRRE then'
      oui mais quoi ???
    2. je dois me mettre d'accord avec la société tiers qui va me fournir les regex sur le format (en gros pour le moment remplacer le ^ de début et le $ de fin par /)


    un collégue qui a fait une recherche et moi même avons aussi vu synregex c'est un composant du SynEditor de l'ide ?

    @bientôt

  7. #7
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Il me semblais qu'il y avait d'autres solutions pour les expressions régulières. Ca vaut ce que ça vaut, j'ai effectuer une petite recherche et suis retombé la-dessus https://github.com/masterandrey/TRegExpr à l'époque je l'avais utilisé sous Delphi pour un petit soft pour traiter les fichiers Css, JS, php et html le composant devrait être facilement portable pour FPC et Lazarus d'après ce que j'ai vu vite fais du code.

    Sinon je suis tombé la dessus aussi : http://www.regexguru.com/2008/08/tpe...r-delphi-2009/. Et il existe également une classe dans la JCL http://wiki.delphi-jedi.org/wiki/JCL_Help:TJclRegEx à voir si elle est incorporée dans la version pour FPC et Lazarus.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  8. #8
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 195
    Points
    195
    Par défaut
    Bonjour Beanz

    J'ai jeté un oeil rapide à TPerlRegEx mais cela utilise la library PCRE ; or je dois faire fonctionner les regex dans un terminal winCE avec un minimum de dépendances....

  9. #9
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Je viens de faire un test simple j'ai juste converti les projets Delphi de https://github.com/masterandrey/TRegExpr avec les outils de Lazarus ils fonctionnent nickel. J'ai juste retouché la "form" du 1er comme d'habitude avec les projets provenant de Delphi

    Nom : 2018-07-02_155613.jpg
Affichages : 358
Taille : 33,6 Ko

    Nom : 2018-07-02_155827.jpg
Affichages : 313
Taille : 31,5 Ko

    Nom : 2018-07-02_160108.jpg
Affichages : 323
Taille : 23,8 Ko
    Nom : 2018-07-02_160128.jpg
Affichages : 349
Taille : 34,8 Ko

    A tester si il fonctionne avec ton cas.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  10. #10
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 195
    Points
    195
    Par défaut
    @beanz : c'est le même que celui qui est inclus dans la distri FPC non ? il me fait la même erreur en tout cas avec la première expression de validation de password

    le problème est en partie résolu, je vais maintenant voir avec le tiers qui doit me fournir les regex depuis un autre soft. Nous allons travailler ensemble pour trouver le meilleur compromis.

    Merci à tous les deux !

  11. #11
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par mtournay Voir le message
    @beanz : c'est le même que celui qui est inclus dans la distri FPC non ? il me fait la même erreur en tout cas avec la première expression de validation de password
    ...
    Merci à tous les deux !
    Alors la je ne peux pas te dire si c'est le même qui est inclus dans FPC: Cela serait à vérifier.

    Pas de soucis à bientot
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  12. #12
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 195
    Points
    195
    Par défaut
    Bonjour

    Citation Envoyé par BeanzMaster Voir le message
    Alors la je ne peux pas te dire si c'est le même qui est inclus dans FPC: Cela serait à vérifier.:
    C'est le même auteur.

  13. #13
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut
    Dans ce cas tu peux peut-être le contacter et ou déposer le problème via son Github. En plus il me semble bien qu'il est français.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  14. #14
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    Citation Envoyé par mtournay Voir le message
    Je crois que je vais utiliser BRRE, mais

    1. je cherche à savoir pourquoi il plante en mode debug....
      BeRo sur la page github de son unité précise 'but please, disable the buggy DFA stuff at BRRE then'
      oui mais quoi ???
    2. je dois me mettre d'accord avec la société tiers qui va me fournir les regex sur le format (en gros pour le moment remplacer le ^ de début et le $ de fin par /)
    pour le point 1 en mode debug il suffit de cocher ignorer cette erreur dans la fenêtre d'erreur. BRRE fonctionne quand même.
    pour le point 2 tu peux laisser le ^ et le $, il faut alors rajouter un / comme premier et dernier caractère.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     R := TBRRERegExp.Create('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/');
    J'ai trouvé une autre possibilité de regexp sous windows mais hélas je ne crois pas que cela fonctionnera sous wince car cela utilise l'objet COM Vbscript.regexp. A titre indicatif voilà comment l'utiliser.
    1 - Télécharger l'unite VBScriptRegex ( Delphi 7 Wrapper for the Microsoft VBScript 5.5 RegExp Classes ) qui se trouve ici
    2 - Voici un exemple de code pour l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // uses  VBScriptRegex 
    function Check_VBScriptRegex(const s: String): boolean;
    var  R: IRegEx;
    begin
      Result := False;
      R := Regex.Create('^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$');
      if not R.Match(WideString(s)) then exit;
      Result := True;
    end;
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

Discussions similaires

  1. [Java] Problème de Regex
    Par spk4ever dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/08/2006, 10h51
  2. Problème avec Regex
    Par trihanhcie dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2006, 14h50
  3. problème de regex
    Par lanfeust42 dans le forum Langage
    Réponses: 11
    Dernier message: 12/07/2006, 15h32
  4. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  5. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 10h26

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