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 :

Regex et multiples occurences


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut Regex et multiples occurences
    Bonjour à tous,

    Je planche actuellement sur un petit script de détection de lien avec une structure bien définie dans une page HTML, j'utilise pour cela les expressions régulières de Python (regex). Je peux récupérer ainsi la partie qui se trouve dans le href de chaque lien pour n'obtenir que ce qui m'intéresse (l'url de la page)

    Le seul problème que je rencontre c'est que je n'arrive pas à obtenir un maximum d'occurences trouvées dans mon échantillon. En gros j'ai l'impression qu'il est en mode "flemmard".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    def analyseLinks(text):
        # --------------------------
        #Analyse des liens vers des pages
        # --------------------------
        m = o.match(text)
        try:
            reslt = m.group(1)
        except:
            reslt = -1
        return [ reslt ]
     
    # Moteur des détections
    o = re.compile(r'^.*(?:<a.* href=\'(\./pagenb:index[0-9]{1,4}-[0-9]{1,4})\'.*>(?:.{3,})</a>.{1,4}){1,}.*$')
     
    navigpages = "<font size='1'>Pages: </font><a href='./pagenb:index204-45'>précédente</a> - <a href='./pagenb:index204-0'><b>1</b></a> <a href='./pagenb:index204-5'><b>2</b></a> <a href='./pagenb:index204-10'><b>3</b></a> <a href='./pagenb:index204-15'><b>4</b></a> <a href='./pagenb:index204-20'><b>5</b></a> <a href='./pagenb:index204-25'><b>6</b></a> <a href='./pagenb:index204-30'><b>7</b></a> <a href='./pagenb:index204-35'><b>8</b></a> <a href='./pagenb:index204-40'><b>9</b></a> <a href='./pagenb:index204-45'><b>10</b></a> <font size='1' face='verdana' color='red'><b>11</b></font> <a href='./pagenb:index204-55'><b>12</b></a> - <a href='./pagenb:index204-55'>suivante</a>"
     
    analyseLR  = analyseLinks(navigpages)
    print "result2: %s" % (analyseLR)
    La variable navigpages qui est mon échantillon d'analyse n'est composé que d'une ligne.

    Il ne me trouve qu'une seule occurence alors qu'il y en a au moins une dizaine, comment faire alors pour qu'il les trouvent toutes ? Je ne sais pas comment m'y prendre,
    merci d'avance !

    Jamesb.

  2. #2
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Tu utilises le mauvais outil. Va chercher la librairie BeautifulSoup qui est fait expressément pour extraire de l'informations de fichiers HTML.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    il se trouve que tu utilises aussi la mauvaise fonction, c'est findall qui permet de trouver plusieurs occurences.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut
    Merci à vous deux pour vos réponses,

    j'ai finalement réussi avec le findall proposé par Fructidor. Désolé GnuVince, mais j'avais déjà presque fini, de plus j'apprend en construisant des regex par moi même plutôt qu'avec un module déjà conçu.

    C'est donc résolu, merci encore et
    Bonne journée

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

Discussions similaires

  1. boost::program_option multiple occurences
    Par darkman19320 dans le forum Boost
    Réponses: 2
    Dernier message: 14/12/2011, 09h54
  2. Multiple occurance Decorator
    Par croc14 dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 29/03/2010, 12h41
  3. Réponses: 1
    Dernier message: 02/09/2009, 14h37
  4. [RegEx] Regex : récupérer toutes les occurences dans une chaîne
    Par Poulpynette dans le forum Langage
    Réponses: 1
    Dernier message: 10/10/2006, 10h14
  5. regex caractere multiple
    Par calimero642 dans le forum Langage
    Réponses: 5
    Dernier message: 28/07/2006, 16h11

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