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

Ruby Discussion :

Extraction d'un href à l'aide d'une expression régulière


Sujet :

Ruby

  1. #1
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut Extraction d'un href à l'aide d'une expression régulière
    Bonjour,

    je cherche à extraire le contenu d'un href pour la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    li><a href="http://172.26.0.21/test/index.php?id=1675&amp;no_cache=1" title="- Communes" onfocus="blurLink(this);" onclick="xt_med('C','0','Menu_gauche','N')">- Communes</a></li>
                        <li><a href="http://172.26.0.21/test/index.php?id=867&amp;no_cache=1" title="- Concertation" onfocus="blurLink(this);" onclick="xt_med('C','0','Menu_gauche','N')">- Concertation</a></li>
    sachant que chaque début de contenu du "a" ou "title commence par le caractère "-" (en rouge)

    La langage est Ruby, mais ça doit être valable pour pas mal de langages...

    Pourriez vous m'aider ?

    Merci d'avance.

  2. #2
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Je ne connais pas bien Ruby mais je suppose que tu peux effectuer des recherches par expressions régulières de type Perl ou PHP... Pour ta recherche le motif regexp serait :

    Et tu ne conserves que ce qui est entre parenthèses. Quelqu'un connaissant Ruby sera plus à même de te répondre pour ce point!

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 172
    Points : 219
    Points
    219
    Par défaut
    Bonjour,

    En effet, c'est une solution qui fonctionne en Ruby.

    Citation Envoyé par Chris Vargas Voir le message
    Quelqu'un connaissant Ruby sera plus à même de te répondre pour ce point!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >> s=<<EOF
    li><a href="http://172.26.0.21/test/index.php?id=1675&amp;no_cache=1" title="- Communes" onfocus="blurLink(this);" onclick="xt_med('C','0','Menu_gauche','N')">- Communes</a></li>
                        <li><a href="http://172.26.0.21/test/index.php?id=867&amp;no_cache=1" title="- Concertation" onfocus="blurLink(this);" onclick="xt_med('C','0','Menu_gauche','N')">- Concertation</a></li>
    EOF
    => "li><a href=\"http://172.26.0.21/test/index.php?id=1675&amp;no_cache=1\" title=\"- Communes\" onfocus=\"blurLink(this);\" onclick=\"xt_med('C','0','Menu_gauche','N')\">- Communes</a></li>\n                    <li><a href=\"http://172.26.0.21/test/index.php?id=867&amp;no_cache=1\" title=\"- Concertation\" onfocus=\"blurLink(this);\" onclick=\"xt_med('C','0','Menu_gauche','N')\">- Concertation</a></li>\n"
    >> s="<"+s
    => "<li><a href=\"http://172.26.0.21/test/index.php?id=1675&amp;no_cache=1\" title=\"- Communes\" onfocus=\"blurLink(this);\" onclick=\"xt_med('C','0','Menu_gauche','N')\">- Communes</a></li>\n                    <li><a href=\"http://172.26.0.21/test/index.php?id=867&amp;no_cache=1\" title=\"- Concertation\" onfocus=\"blurLink(this);\" onclick=\"xt_med('C','0','Menu_gauche','N')\">- Concertation</a></li>\n"
    >> r=s.match(/<a[^>]*>(- .*)<\/a>/)
    => #<MatchData:0x3554a8>
    >> r[1]
    => "- Communes"
    >>
    Si tu ne veux extraire que ce type de chaine, cela convient trés bien. Pour des opérations plus compliquées sur du HTML, utilises de préférence une librairie type hpricot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >> require "hpricot"
    => true
    >> parser=Hpricot.parse(s)
    => #<Hpricot::Doc {elem <li> {elem <a href="http://172.26.0.21/test/index.php?id=1675&no_cache=1" title="- Communes" onfocus="blurLink(this);" onclick="xt_med('C','0','Menu_gauche','N')"> "- Communes" </a>} </li>} "\n                    " {elem <li> {elem <a href="http://172.26.0.21/test/index.php?id=867&no_cache=1" title="- Concertation" onfocus="blurLink(this);" onclick="xt_med('C','0','Menu_gauche','N')"> "- Concertation" </a>} </li>} "\n">
    >> (parser/'a').each { |c| puts c.inner_html }
    - Communes
    - Concertation
    Enfin, dans ton cas, ça serait comme prendre une masse pour écraser un moustique ;-)

    Côme

  4. #4
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    Merci de vos réponses !

    Effectivement j'avais pour idée d'utiliser Hpricot, mais le manque de doc à ce sujet m'a quelque peu démoralisé.

    A bientôt !

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

Discussions similaires

  1. [RegEx] Besoin d'aide pour une expression régulière
    Par vallica dans le forum Langage
    Réponses: 4
    Dernier message: 04/09/2007, 19h59
  2. [RegEx] Aide pour une expression réguliére.
    Par mr_keyser dans le forum Langage
    Réponses: 9
    Dernier message: 15/06/2007, 10h27
  3. Un peu d'aide sur une expression régulière particulier
    Par ruana dans le forum Général Python
    Réponses: 2
    Dernier message: 03/06/2007, 19h04
  4. Besoin d'aide pour une expression régulière
    Par planetiss dans le forum Langage
    Réponses: 5
    Dernier message: 16/02/2006, 19h04
  5. [RegEx] Aide sur une expression régulière toute simple
    Par tchoumak dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2005, 15h46

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