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 :

Problème expression régulières


Sujet :

C#

  1. #1
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut Problème expression régulières
    Bonjour je dois décrypter un code reçu en paramètre d'une fonction et je voulais savoir si l'extraction des informations que je désire est réalisable avec les expressions régulières en C# :
    Chacun de mes codes posséderas :
    - 0 ou 1 préfixe alpha num
    - 1 corps numérique
    - 0 ou 1 suffixe alpha num

    En fait par exemple je reçois un code de ce type "A945445", et je reçois en pramètre un masque de la forme AA[0-n]###AA autrement dit je dois être capable d'extraire de mon code les données suivantes :
    préfixe = A9
    corps numérique = 454
    suffixe = 45

    Puis je facilement arriver à mes fins avec des expressions régulières ou existent il un autre moyens simple?

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 57
    Points : 61
    Points
    61
    Par défaut
    Bonsoir,
    Juste pour info avant de commencer, tu dis :
    - 0 ou 1 préfixe alpha num
    - 1 corps numérique
    - 0 ou 1 suffixe alpha num
    Puis dans l'exemple tu donnes
    préfixe = A9
    corps numérique = 454
    suffixe = 45
    N'y aurait-il pas une faute dans ton suffixe ? ne devrait-il pas être du type AA ?

    Bien commençons, tu peux facilement parvenir à tes fins avec les expressions régulières ( fortement redoutée )

    Tu peux opérer de la manière suivante :

    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
     
    string chaine = "1212346666AB";
    string mask = @"^([A-Z]{1,2}?)(\d+)([A-Z]{1,2})$";
     
    Match matching= Regex.Match(chaine, extract);
     
    if (matching.Success)
    {
        prefixe =  matching.Groups[1].Value;
        corps numérique = matching.Groups[2].Value;
        suffixe = matching.Groups[3].Value;
    }                   
    else
    {
       Console.Write("Perdu :D");
    }
    Tu vois ce n'est pas mortel.
    Brève explication sur le "mask"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @"^([A-Z]{1,2})(\d+)([A-Z]{1,2})$";
     @ ==> n'interprète pas les \
     ^ ==> début de chaine 
     $ ==>  fin de chaine
     les ()   forment les 3 groupes que tu attends
     [A-Z]{1,2} ==>  je veux au minimum 1 lettre et au max 2 
     \d+           ==>  je veux des chiffres min 1, max infini
        +           ==>  le précédent caractère doit etre présent au min 1 fois et
                          au    max N (ou N = infini)
    Dernière chose, Pourquoi le Group[1] et pas Group[0], car l'index 0 représente la chaine, elle-même.


    Voilà, je pense avoir répondu de manière claire et précise, s'il te reste des questions sur le sujet, je reste à ton entière disposition.

    Bien à toi.
    Duck

  3. #3
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Hello grand_duck,
    merci de prendre le temps de répondre à ma question.
    Pour la première remarque : j'indique effectivement que dans mon code initial je peux avoir éventuellement avoir un suffixe d'ou la cardinalité (0-1), par contre il doit être (comme le préfixe) réeelement alphanumérique autrement dit il correspond à l'union [A-Z][a-z][0-9], bref en expression régulière je pense que ça doit être l'équivalent du pattern : Mais à partir de la base que tu me sonnes et de tes explications, je penses que je vais pourvoir composer à partir de là.
    Merci encore pour ton aide.

Discussions similaires

  1. Problème expression régulière
    Par nono44200 dans le forum Struts 1
    Réponses: 1
    Dernier message: 29/08/2007, 09h38
  2. Problème expressions régulières
    Par cottcott dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2007, 14h29
  3. Réponses: 3
    Dernier message: 20/04/2007, 14h47
  4. [RegEx] problème expression régulière
    Par H-bil dans le forum Langage
    Réponses: 4
    Dernier message: 13/02/2007, 15h38
  5. Problème expressions régulières
    Par sozie9372 dans le forum Langage
    Réponses: 3
    Dernier message: 07/06/2006, 15h13

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