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

C# Discussion :

Expression regulière c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut Expression regulière c#
    Bonjour,

    je n'arrive pas à trouver l'expresion réguliere de
    "\r\n^SISR: 1, XXXX\r\n"; avec XXXX nombre compris entre 0 et 1500.

    J'ai essayé cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String patern = "\r\n^SISR: 1, [0-1500]\r\n";
    Regex myRegex = new Regex(patern);
    mais sans succès

    Merci par avance.

    Cordialement,

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Le plus simple c'est de capturer le nombre et ensuite vérifier s'il est dans ton intervalle.

    Je suis déjà tombé sur une explication pour trouver des intervalles avec les ER, ça n'avait pas l'air facile...

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu vas te prendre la tête si tu essaies de matcher des patterns sur plusieurs lignes... Lis plutôt ton fichier ligne par ligne, et teste chaque ligne pour voir si elle match.

    D'autre part, "[0-1500]" n'est pas un range valide : 1500 n'est pas un caractère... tu pourrais dire "[0-9]+" pour accepter 1 chiffre ou plus, mais ça n'a pas tout à fait le même sens. Les expressions régulière ne permettent pas (du moins pas facilement) de contrôler la valeur d'un nombre : c'est un outil qui sert à traiter du texte, pas des nombres...

    Cela dit, en bidouillant un peu, on peut s'en sortir avec un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "^SISR: 1, (1500|1[0-4][0-9]{2}|[0-9]{1,3})$"
    En gros, on teste séparément les 3 cas possibles :
    1500 : la valeur 1500
    1[0-4][0-9]{2} : le premier chiffre est 1, le second entre 0 et 4, les 2 derniers entre 0 et 9 (valeurs de 1000 à 1499)
    [0-9]{1,3} : entre 1 et 3 chiffres de 0 à 9 (valeurs de 0 à 999)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    +1, ta solution est très propre, perso j'aurai fait un bon vieux Split sur la virgule xD

    ce serait intéressant de comparer les vitesses de traitement...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut
    Merci, pour cette réponse +1
    Je manipule des bytes que je réceptionne via la liaison série, et pour reconstituer mon fichier je dois supprimer les réponses du modem (commande AT). Je ne vois pas d'outils à 1ere vue, pour la suppression des réponses du modem (chaine de caractère) dans un tableau de bytes. Du coup j'essaye de gérer avec un BinaryWriter et la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Text.Encoding.ASCII.GetBytes();
    Existe t-il d'autre solution plus simple ?

    Merci par avance

    Cordialement,

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je comprends pas trop ton dernier message... pourquoi transformer le texte en tableau de bytes ? C'est plus simple à gérer sous forme de chaine, non ?

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Arnard Voir le message
    ce serait intéressant de comparer les vitesses de traitement...
    Les RegEx (même si elles ont au demeurant beaucoup d'interêt) n'ont pas, en général, la rapidité d'exécution comme qualité principale.

Discussions similaires

  1. Recherche recursive à l'aide des expressions reguliére
    Par titoff dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/12/2005, 16h42
  2. [RegEx] aide pour une expression regulière
    Par hugo123 dans le forum Langage
    Réponses: 5
    Dernier message: 24/11/2005, 15h41
  3. ET dans une expression regulière
    Par kesako dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 12h57
  4. Problème expression regulière ??
    Par panaone dans le forum Langage
    Réponses: 5
    Dernier message: 18/08/2005, 13h41
  5. Variables et Expression Regulière
    Par Temari dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2005, 01h55

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