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

Windows Forms Discussion :

la methode match me retourne le resultat le plus court


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 16
    Points
    16
    Par défaut la methode match me retourne le resultat le plus court
    Bonjour j'ai un problème vraiment bête qui m'embête beaucoup dans l'utilisation des classes Regex et Match.

    Voilà mon problème en exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    static void Main(string[] args)
            {
     
                string pattern = "^(trace|t)";
                Regex rx = new Regex(pattern);
     
                string text = "trace";
     
                Match m = rx.Match(text);
     
                //1er element typeNumber
                if (m.Success)
                    System.Console.WriteLine(m.ToString());    
            }
    le programme fonctionne comme je le souhaite et m'affiche trace.
    Maintenant si j'intervertis les elements du pattern (t|trace) le programme me renvoie t.
    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
    static void Main(string[] args)
            {
     
                //string pattern = "^(trace|t)";
                string pattern = "^(t|trace)";
                Regex rx = new Regex(pattern);
     
                string text = "trace";
     
                Match m = rx.Match(text);
     
                //1er element typeNumber
                if (m.Success)
                    System.Console.WriteLine(m.ToString());    
            }
    J'ai regardé les différentes options de la classe Regex et malheureusement je n'ai rien trouvé. J'espère que vous pourrez m'aider dans mon problème et je vous en remercie d'avance.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 205
    Points : 206
    Points
    206
    Par défaut
    Je dirais que c'est exécuté de gauche a droite:

    "^(trace|t)" va chercher trace puis t

    "^(t|trace)" va chercher t puis trace

    Premier trouve, premier servi

    J'ai regardé les différentes options de la classe Regex et malheureusement je n'ai rien trouvé. J'espère que vous pourrez m'aider dans mon problème et je vous en remercie d'avance.
    Que voudrais-tu que ca te retourne exactement dans les 2 cas?

  3. #3
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    la methode match me retourne le resultat le plus court
    C'est le principe même d'un moteur orienté expressions régulières, comme c'est le cas en .Net. Dès qu'il trouve une correspondance valide il ne cherche pas plus loin.
    Pas de questions techniques par MP

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par julien_iz Voir le message
    Que voudrais-tu que ca te retourne exactement dans les 2 cas?
    Je voudrais qu'il me retourne systématiquement le plus long, un peu comme lex.

  5. #5
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par Folkene Voir le message
    Je voudrais qu'il me retourne systématiquement le plus long, un peu comme lex.
    Impossible. Sous lex / flex, le moteur est orienté texte et il recherche alors la chaîne la plus longue possible. En .Net, comme je l'ai dit précédemment, il est orienté expression régulière ce qu'il fait que la recherche s'arrête dès qu'une correspondance a été trouvée.

    Dans le cadre de l'exemple, il faudra faire attention à tes expressions en mettant la plus longue en premier pour que cela fonctionne.
    Pas de questions techniques par MP

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci encore une fois d'avoir répondu , pour moi cela est résolu

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 205
    Points : 206
    Points
    206
    Par défaut
    Alors clic sur résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche ne retourne aucun resultat
    Par ninou212212 dans le forum SharePoint
    Réponses: 1
    Dernier message: 23/10/2008, 09h32
  2. Jointure externe simple ne retourne aucun resultat
    Par youyoupapayou dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/09/2008, 11h13
  3. Réponses: 24
    Dernier message: 13/11/2006, 09h00
  4. Requete qui devrait retourner des resultats.
    Par DjBeGi dans le forum Access
    Réponses: 5
    Dernier message: 01/06/2006, 09h19
  5. Réponses: 8
    Dernier message: 11/05/2006, 23h18

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