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 de Regex!


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Par défaut Problème de Regex!
    Bonjour à tous!
    Alors voilà, je travaille sur un programme qui récupère des infos sur le net.
    Pour cela, le programme recupere le code source d'une page et est censé utiliser les regex pour retrouver des infos.
    Malheureusement je n'arrive pas à récupérer l'info en question.
    Par exemple:
    Le code contient: "Année : <a href=. . . .>2007</a>"
    Voici ma procédure qui ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    temp = lectAnnee.ReadToEnd();
                Match match = Regex.Match(temp, "Année :.*<a.*>(?<data>.+?</a>");
                annee = match.Groups["data"].Value.ToString();
                if (annee == "")
                {
                    annee = "L'information n'est pas disponible";
                }
    où temp est une string qui contient le code source de la page en question et data est censé être l'info recherchée..
    Le résultat est TOUJOURS "L'info n'est pas dispo" alors qu'elle est bien présente dans le code...
    Merci d'avance de votre aide.

  2. #2
    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
    Dans
    Tu captures le plus de caractères possible, ce qui fait que l'expression ne marchera pas bien puisque <a href=....>...</a> correspond à l'expression

    Ceci devrait fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Match match = Regex.Match("Année : <a href=. . . .>2007</a>", @"Année :\s*<a[^>]*>(?<data>[^<]+)</a>");
    string s = match.Groups["data"].Value;
    Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Match match = Regex.Match("Année : <a href=. . . .>2007</a>", @"(?<=<a[^>]+>)[^<]*(?=</a>)");
    string s = match.Value;
    Si besoin un petit article sur les expressions régulières

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Par défaut
    Merci beacoup!
    Ca a marché!
    Par contre je me trouve face à un autre problème: "Et s"il y avait plusieurs années.."
    Même synthaxe, toujours "Année : <a . . .> 2009</a><a . . .> 2010</a> <br />"
    Je ne sais pas comment adapter le code précédent...
    Merci

  4. #4
    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
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MatchCollection matches = Regex.Matches("Année : <a . . .> 2009</a><a . . .> 2010</a> <br />", @"(?<=<a[^>]+>)[^<]*(?=</a>)");
    foreach (Match match in matches)
    {
        Console.WriteLine(match.Value);
    }

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Par défaut
    Merci de la rapidité, par contre le problème c'est que je DOIS utiliser "Année :" dans ma regex pour savoir me situer dans la source.
    Sinon il va me prendre tous les liens de la sources et me les mettre en année...
    J'espere que c'est comprehensible lol

  6. #6
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Par défaut
    J'ai tenté plusieurs regex mais sans succès...Le problème c'est que le nombre d'années, par exemple, est aléatoire...
    Parfois une seule, mais parfois 3 ou 4 aussi...
    J'espère que quelqu'un pourra m'aider parce que je suis a cour d'idées...

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

Discussions similaires

  1. [Java] Problème de Regex
    Par spk4ever dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/08/2006, 10h51
  2. Problème avec Regex
    Par trihanhcie dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2006, 14h50
  3. problème de regex
    Par lanfeust42 dans le forum Langage
    Réponses: 11
    Dernier message: 12/07/2006, 15h32
  4. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  5. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 10h26

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