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

Arduino Discussion :

élaboration motif expression régulière


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 219
    Par défaut élaboration motif expression régulière
    Bonjour

    Je souhaite créer un motif pour "matcher" ceci :
    (MMM.M NNN.N PPP.P QQQ RR.R S.SS TT.T b7b6b5b4b3b2b1b0<cr>

    MMM.M (M is an integer number ranging from 0 to 9.)
    NNN.N (N is an integer number ranging from 0 to 9.)
    PPP.P (P is an integer number ranging form 0 to 9.)
    QQQ (QQQ is a percentage)
    RR.R (R is an integer number ranging from 0 to 9.)
    SS.S or S.SS (S is an integer number ranging from 0 to 9.)
    TT.T (T is an integer number ranging form 0 to 9.)
    b7b6b5b4b3b2b1b0. Where bn is a ASCII character ‘0’ or ‘1’.
    Stop Byte : <cr>
    Example:
    (208.4 140.0 208.4 034 59.9 2.05 35.0 00110000<cr>

    J'utilise ce lien pour m'aider à préparer ma regex. :
    https://regexper.com/#R%22%28%5B%5C%...B%5Cr%5D%29%22

    Ca se rapproche de ce que je souhaite retrouver mais je ne sais pas comment élaborer la partie du motif correspondant à :
    SS.S or S.SS
    Je ne sais pas comment faire l'un ou l'autre ?

    D'autre part, j'utilise {3} pour dupliquer le motif 3 fois, mais je ne le vois reproduit que 2 fois (n-1 fois) dans la "simulation".

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par défaut
    Il te faut utiliser un ou (ab|bc pour ab ou bc). Éventuellement en mettant le tout dans des parenthèses. Je n'ai rien vu de tel sur le cours de guillaume, c'est une présentation rapide des regex. Il doit y avoir un cours complet sur les regex ici.

    Concernant l'écriture de la regex, tu peux simplifier [\d] en écrivant seulement \d. Idem pour [\.] qui s'écrit soit [.] soit \.. Du moment qu'il n'y a qu'un seul identifiant, les crochets ne sont pas utiles.

    D'autre part, j'utilise {3} pour dupliquer le motif 3 fois, mais je ne le vois reproduit que 2 fois (n-1 fois) dans la "simulation".
    C'est normal. Si on demande a{1}, on traverse un caractère. Pour a{2}, on le traverse 1 fois puis on recule 1 fois. Pour a{3}, on recule 2 fois. Ce qui s'affiche est le nombre de fois qu'il faut reculer, pas le nombre de fois que le motif est comptabilisé.

  3. #3
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 219
    Par défaut
    Super, merci.

    J'arrive finalement à ceci :
    R"(\((\d{3}\.\d\s){3}\d{3}\s\d{2}\.\d\s((\d{2}\.\d)|(\d\.\d{2}))\s\d{2}\.\d\s[01]{8}\r)"
    https://regexper.com/#R%22%28%5C%28%...8%7D%5Cr%29%22

    Je pense que cela correspond bien au motif recherché qui est :
    (MMM.M NNN.N PPP.P QQQ RR.R S.SS TT.T b7b6b5b4b3b2b1b0<cr>
    ou
    (MMM.M NNN.N PPP.P QQQ RR.R SS.S TT.T b7b6b5b4b3b2b1b0<cr>

    Merci pour le coup de main.

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 219
    Par défaut
    Bon, apparemment, pour utiliser les REGEXP avec l'IDE Arduino, il faut un motif élaboré pour LUA qui est différent de celui que j'ai préparé ("Emac standard")

    Déjà que les REGEXP ne sont pas simples à mettre en œuvre, mais si en plus il y a plusieurs "standard" !!!

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par défaut
    Oui, il y a des standards plus ou moins poussés, mais si c'est les mêmes "regexp" qu'en Lua (en minuscule, ce n'est pas un acronyme), bah, ce n'est pas des regex, mais des "patterns": https://www.lua.org/manual/5.3/manual.html#6.4.1

    La grosse limitation concerne l'absence de | (entre autres) ce qui rend le moteur simple et rapide, mais aussi limité. Autres modifications majeurs, le caractère d’échappement est % plutôt que \, et le qualifieur - existe en tant que version non-gourmande de * (*? pour les regex perl).

    Soit il faut utiliser 2 regex, soit tricher un peu avec \d[\d.]{2}\d qui accepte aussi SSSS ou S..S et faire éventuellement un post traitement.

    Tu peux donner un lien vers la doc ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 219
    Par défaut
    Je suppose que tu demandes la doc du matériel avec lequel je souhaite communiquer et dans le cas présent vérifier que l'info renvoyée est bien de la forme attendue ?

    SUMRY_RS232_Protocol.pdf

    Sinon le lien correspondant pour traiter les regexp en Arduino.
    http://www.gammon.com.au/forum/?id=11063

Discussions similaires

  1. [DATA] Condensation de motifs répétés dans une expression régulière
    Par JeromeMATHIAS dans le forum SAS Base
    Réponses: 0
    Dernier message: 13/12/2011, 10h30
  2. répétition de motif, expression régulière
    Par Jasmine80 dans le forum Langage
    Réponses: 13
    Dernier message: 08/08/2011, 14h29
  3. Réponses: 27
    Dernier message: 25/02/2010, 00h45
  4. [RegEx] Motif d'une expression régulière
    Par The Goion dans le forum Langage
    Réponses: 5
    Dernier message: 08/07/2009, 22h32
  5. [RegEx] Expression régulière et motif
    Par The Goion dans le forum Langage
    Réponses: 9
    Dernier message: 07/07/2009, 23h06

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