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 :

extraction de groupe d'une expression régulière


Sujet :

C#

  1. #1
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut extraction de groupe d'une expression régulière
    bonjour,
    Est ce que je peux extraire les groupes existant dans une chaine à partir d'un expression régulière suivant la forme suivant \1 \2 \3 pour extraire les goupes 1, 2 et 3 par exemple ??
    toute aide est la bienvenue

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Dim collection As MatchCollection = Regex.Matches("\groupe1 \groupe2", "\* \* ", RegexOptions.IgnoreCase)
    Ce code peut te donner les groupes, si t'as un espace entre groupe met un \s voir un \s* si il y a plusieurs espaces.
    Apres tu dois enlever le \ si tu veux que le nom.

  3. #3
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    Un peu de code pourrait faciliter la compréhension de la question.

    Que souhaites-tu faire exactement?

  4. #4
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut
    @Quatre Couleurs : en fait il n'ya pas de Matches() qui prends 3 arguments
    @roster : en fait ce que je veux exactement c'est lorsque j'ai une expression régulière par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [0-9]([a-z]+)[0-9]([a-z]+)([0-9]+)
    et une chaine comme suit
    123azerty456qwerty789
    je donne au programme l'expression régulière "\1 \3" par exemple le programme me rend les groupes 1 et 2 c'est à dire : azrty et 789

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Elle doit bien exister puisque je l'utilise cette fonction (http://msdn.microsoft.com/en-us/library/b49yw9s8.aspx). En plus une fois que tu as la collection il te suffit de faire un for each pour extraire ce que tu veux...

  6. #6
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut
    oui c'est bizarre car lorsque je l'utilise mon éditeur ne la reconnaît pas !!

  7. #7
    Membre expérimenté
    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 : 47
    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
    Par défaut
    Tu peux envisager quelque chose comme ça
    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
    17
    18
    public string[] GetGroupsFromRegex(params int[] groupNumbers)
    {
        string[] array = null;
     
        Match match = Regex.Match("123azerty456qwerty789", "^[0-9]+([a-z]+)[0-9]+([a-z]+)([0-9]+)$");
     
        if (match.Groups.Count > 0)
        {
            int index = 0;
            array = new string[groupNumbers.Length];
            foreach (int i in groupNumbers)
            {
                array[index++] = match.Groups[i].Value;
            }
        }
     
        return array;
    }
    Et à l'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string[] groups = GetGroupsFromRegex(1, 3);

  8. #8
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut
    Merci bien StormimOn, mais ça je sais sauf que moi je vaux que donne à mon programme la 'expression régulière suivant "\1\2" pour qu'il me donne par exemple le groupe 1 et 2 de ma chaine concaténés, est ce possible ??

  9. #9
    Membre expérimenté
    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 : 47
    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
    Par défaut
    \1, \2, ... c'est ce que l'on appelle backreference dans les expressions régulières. Utilisées seules cela ne sert absolument à rien. Donc non tu ne peux pas utiliser ceci pour extraire les groupes.

    Si tu veux extraire certains groupes tu dois passer par le code (propriété Match.Groups).

  10. #10
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut
    ok merci bien

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/07/2014, 02h48
  2. Réponses: 3
    Dernier message: 11/08/2008, 10h05
  3. [JMeter] Extraction avec une expression régulière
    Par LittleBean dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 04/04/2007, 18h39
  4. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 11h54
  5. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 15h22

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