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 régulière] Comment récupérer un texte entre parenthèses.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut [expression régulière] Comment récupérer un texte entre parenthèses.
    Bonjour,

    Dans le cadre de la réalisation d'un parser d'expressions logiques, j'aimerais construire une expression régulière avec qui capture dans dans groupes les sous-expressions entre parenthèses.

    Le problème est que souvent les parenthèses sont emboitées.

    Dans l'exemple suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((a == b || c==d)  && e==f || h==j)  || k==l
    J'aimerais récupérer dans un groupe la sous expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((a == b || c==d)  && e==f || h==j)
    Quelqu'un saurait-il comment faire ?

    Merci d'avances pour vos conseils.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    Tu travail sur un expression que l'on peut qualifier de reguliere

    je pense que Regex peut t'être util.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Regex _regex = new Regex("([a-z-A-Z0-9==||&& ]{3,})");
    string test = "((a == b || c==d)  && e==f || h==j)  || k==l";
    string[] ggg = _regex.Split(test);
    ggg contiendras:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    0 : "(("
    1 : "a == b || c==d"
    2 : ")"
    3 : " && e==f || h==j"
    4 : ")"
    5 : " || k==l"
    6 : ""

    biensur je te conseil(si tu ne connais pas Regex) de lire plusieurs tuto sur celle-ci afin de perfectionner la chainede filtre donnè en parametre

    ensuite il faudras surment re-travailler le tableau de string obtenu

  3. #3
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Oui je connais les expressions régulières.
    Nous aurions put écrire tout simplement :

    Mais cela ne me conviens malheureusement pas car il peut y avoir des parenthèses entre guillemets ou entre apostrophes. Je veux aussi que mon expression test satisfasse l'expression régulière seulement si elle possède un mot ".or." qui n'est pas entre parenthèses...

Discussions similaires

  1. vb.net comment récupérer du texte entre deux "\'"
    Par infodes dans le forum VB.NET
    Réponses: 3
    Dernier message: 29/10/2014, 12h11
  2. Réponses: 8
    Dernier message: 02/02/2014, 09h30
  3. [RegEx] Comment récupérer le texte entre deux motifs ?
    Par whitespirit dans le forum Langage
    Réponses: 6
    Dernier message: 25/03/2010, 21h59
  4. [RegEx] Comment récupérer du texte entre balises <font> ?
    Par leboy dans le forum Langage
    Réponses: 3
    Dernier message: 11/04/2007, 18h03
  5. [C# 1.1] Comment récupérer du texte entre des mots connus ?
    Par foolsky dans le forum Windows Mobile
    Réponses: 8
    Dernier message: 26/04/2006, 14h15

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