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

Python Discussion :

[Regexp] les poupées rousses


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 132
    Par défaut [Regexp] les poupées rousses
    je cherche à parser une page (x)HTML
    Je n'ai pas "beaucoup" d'informations à extraire, juste les liens sur une image vers une autre image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="unlienversuneimage.jpg"><img src="uneimage.jpg" alt="uneimage" /></a>
    j'utilise ce pattern :
    "<a.*href=[\x27|\x22](.*?jpg)[\x27|\x22]><img.*src=[\x27|\x22](.*?jpg)[\x27|\x22].*></a>"
    Le problème c'est que je ne suis pas l'auteur des pages que je vais parser, et elles sont donc toutes formées différements.
    Faut imaginer qu'il peut y avoir des attributs de toutes sortes, class, id, onmouse, avant ou après l'information qui m'interesse.
    Dans l'ensemble ça fonctionne, mais ce pattern présente quelques limitations.
    • Si tout est une sur seul ligne alors, alors le premier lien est pris en compte et la dernière image (ce qui est assez logique)
    • Si les balises, éléments sont sur des lignes différentes, ça ne matche pas (c'est pas vraiment un problème étant donné qu'avant de parser mes données je peux remplacer tous les retours à la ligne par un espaces mais vu le problèmes du dessus...

    J'ai jeté un oeil un HTMLParser mais ça ne m'a pas l'air assez souple pour ce que je cherche à faire.
    J'aimerai bien continué d'utiliser mes regexps mais là j'avoue que je calle un peu et je ne sais pas trop comment faire...
    Si quelqu'un a une idée..

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Tu utilises déjà l'expression .*?, qui trouve une correspondance minimale, à deux reprises. Pourquoi ne pas l'utiliser également dans les trois autres cas où tu utilises .* ?
    Tu peux aussi remplacer les trois .* par [^>]* pour matcher n'importe quoi sauf >.
    Je rajouterais aussi la possibilité d'avoir des blancs entre > et < (avec \s*). Et éventuellement utiliser le flag DOTALL afin que le point matche aussi un retour de ligne.

Discussions similaires

  1. [RegExp] Comment autoriser en regexp les caracteres alphanumeriques et interdire tous le reste
    Par yassinozi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/08/2014, 23h50
  2. [RegExp] Parser les balises PHP
    Par ePoX dans le forum Langage
    Réponses: 6
    Dernier message: 19/02/2006, 18h34
  3. [RegExp] Les mots finissant par un !
    Par Alexandre T dans le forum Langage
    Réponses: 1
    Dernier message: 08/02/2006, 18h41
  4. Réponses: 3
    Dernier message: 15/11/2005, 23h52
  5. Réponses: 8
    Dernier message: 02/11/2005, 14h16

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