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 :

Récupérer contenu expression RegEx


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut Récupérer contenu expression RegEx
    Bonjour à tous,

    J'ai une chaine de caractère comme celle ci :

    <div style="padding: 2 0 2 0; display:inline; width: 80%;"><h3 class="SpProse">Date de sortie : <b><a href="/film/agenda_gen_date=09/07/2008.html" class="link1"> 09 Juillet 2008</a>

    ou je voudrais récupérer '09 Juillet 2008'. Comment faire? J'avais oensé au ReGex mais est la meilleur solution?

  2. #2
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Moi je ne m'embeterais pas avec le regex
    Je ferais un indexof de "agenda_gen_date=" ou de "date="
    Ensuite un substring
    Ensuite DateTime.TryParse
    Et apres tu reformate comme tu veux
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut
    Il est vrai que vu comme ca, cela parrait plus simple. Mais imaginons que j'ai une chaine de cette forme

    <a class="link1" href="/personne/fichepersonne_gen_cpersonne=12344.html">Peter Berg</a></h3></div><

    et que je veuille récupérer 'Peter Berg', comment faire?

  4. #4
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Il existe quelque classe dediée au parsage xml mais je n'en ai qu'une maigre expérience et elles sont bien lourde a mon avis pour ce que tu veux faire

    Tout depends bien sur de l'homogénéité de ce que tu dois traiter

    A priori je resterais sur l'idée d"un IndexOf </a>
    Et puis remonter le ">" precedent
    C'est un peu brico mais pas plus qu'un regexp a mon avis et sans doute plus lisible !

    Mais peut - etre qu'un specialiste html aura une meilleure suggestion
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  5. #5
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string s = "<a class=\"link1\" href=\"/personne/fichepersonne_gen_cpersonne=12344.html\">Peter Berg</a></h3></div>";
                Match match = Regex.Match(s, "<a.*>(?<data>.*)</a>");
    match.Groups["data"].Value = Peter Berg

    Mieux vaut utiliser un regex que indexof!!
    Remoting Context Matters
    Everything in this chapter is 100 percent undocumented. Reliance on these techniques is not supported by either Microsoft, the publisher, or the author of this book. Use at you own risk! If your computer won't work afterwards, your toaster blows up or your car doesn't start, I assume no liability whatsoever: You're now about to enter the uncharted territories of .NET and you do so on your own risk. I can only provide some guidance

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour

    Les regular expression c'est certainement tres bien quand on maitrise bien la syntaxe !
    Dans le cas present (et apres avoir essayé) je ne vois toujours pas comment on récupere "Peter Berg" avec la syntaxe en exemple
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Oups

    J'avais pas vu l'instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    match.Groups["data"].Value = Peter Berg
    Cachée apres le bloc code !

    Vu comme ca, ca devient sympa, je m'en souviendrai !
    Neanmoins, le regexp c'est presque un language a part entiere
    Je vais m"y coller un de ces jours
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par shwin Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string s = "<a class=\"link1\" href=\"/personne/fichepersonne_gen_cpersonne=12344.html\">Peter Berg</a></h3></div>";
                Match match = Regex.Match(s, "<a.*>(?<data>.*)</a>");
    match.Groups["data"].Value = Peter Berg

    Mieux vaut utiliser un regex que indexof!!
    Merci c'est ce qu'il me faut j'ai pas encore test car je suis au taf. En revanche j'aimerai bien comprendre pourquoi en indiquand (?<data>.*) dans l'expression, je vais récupérer Peter Berg.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut
    pour me répondre à moi même en fait j'ai bien compris la forme de la regex, merci à vous pour votre aide

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/06/2020, 12h44
  2. Récupérer contenu d'une page HTML
    Par ArHacKnIdE dans le forum Langage
    Réponses: 9
    Dernier message: 07/11/2006, 08h56
  3. Récupérer contenu d'un fichier texte
    Par matt8-5 dans le forum Langage
    Réponses: 5
    Dernier message: 02/11/2006, 17h58
  4. [VBA-O]Récupérer contenu message
    Par Elstak dans le forum VBA Outlook
    Réponses: 14
    Dernier message: 17/08/2006, 09h34

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