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 :

[C#] Regex match seulement la plus petite regex


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de rkade
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 48
    Par défaut [C#] Regex match seulement la plus petite regex
    Bonsoir à tous,

    Me voila confronter à un problème de regex depuis quelques heures, et je n'arrive pas à m'en dépatouiller, je dois mal m'y prendre je pense.

    Voici une synthèse de mon fichier à analyser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <balise> ... .... </balise> ... <balise> ... </balise> ... <balise> ... TEXT ... </balise> ... ... <balise> .... .... ... </balise>
    Je dois maintenant récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <balise> .... TEXT .... </balise>
    J'ai donc utiliser une regex du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @"(\<balise\>).*?TEXT.*?(\</balise>)"
    Seulement il me prend dés la première balise ouvrante, et non celle qui est la plus proche de TEXT.

    Je pense donc à une solution de mettre dans ma regex le fait de changer mon premier .*? par quelque chose qui m'interdit une nouvelle balise ouvrante. Mais je ne sais pas comment interdire un groupe.

    Pourriez vous m'aider ?

  2. #2
    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
    Si c'est du XML, utilise un parseur XML (XmlDocument ou Linq to XML par exemple)
    Si c'est du HTML, utilise un parseur HTML (celui-ci par exemple)

    Les regex peuvent convenir pour les cas très simple, mais dès que ça demande plus de quelques minutes de réflexion, c'est que ce n'est sans doute plus l'outil adapté...

    Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

    -- Jamie Zawinski
    C'est un peu caricatural, mais il y a un fond de vérité

  3. #3
    Membre actif Avatar de rkade
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 48
    Par défaut
    Oui, tout à fait d'accord avec toi, mais je suis tout de même obligé d'utiliser une regex...

    Personne n'a d'idées ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    pourquoi obligé?
    Je suis de l'avis de tom, le framework offre des outils rapides et efficaces pour le format que tu décris, alors pourquoi devoir utiliser une regex compliquée?

  5. #5
    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
    J'ai cherché un moment, et je n'ai pas trouvé comment faire ça avec une Regex... je ne suis même pas sûr que ce soit possible, en tous cas pas de façon simple.

  6. #6
    Membre actif Avatar de rkade
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 48
    Par défaut
    Ok, merci de vos réponse.

    J'ai dit obligé car nous étions parti sur une solution simpliste avec le client d'analyser un fichier par regex... Maintenant, je crois que nous allons devoir faire marche arrière pour repartir sur une solution XmlDocument + XPath.

    Merci

Discussions similaires

  1. [RegEx] Une petite regex à modifier
    Par MB_MathemaTeX dans le forum Langage
    Réponses: 10
    Dernier message: 27/08/2007, 22h54
  2. [RegEx] Extraction du match le plus petit
    Par Redils dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2007, 22h10
  3. [RegEx] Regex : autoriser seulement certains caractères
    Par Thi0123 dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2006, 11h22
  4. [Regex]Match d'une regexp avec une chaîne avec caractères spéciaux
    Par gdawirs dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 12h24
  5. [Regex] Matching...
    Par billynirvana dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 18/07/2005, 17h16

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