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

Langage Perl Discussion :

regex perl et fichier HTML


Sujet :

Langage Perl

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 17
    Par défaut regex perl et fichier HTML
    bonjour,

    Je suis utilisateur perl dans le cadre de mon job.
    Je ne suis plus un novice mais je ne suis pas encore un scripteur expert .
    j'ai le problème suivant;
    sans faire de regex à rallonge, je désire enlever d'un fichier html tous les caractères compris entre " <> ou inclus c'est a dire les balises , ouvrantes et fermantes.

    J'ai fait pas mal de recherche fondamentale et maintenant je suis pris par le temps, aussi un peu d'aide ne serait pas de refus...

    voici ce que j'ai essayé ( entre autre).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($line =~ m/(<.+>)/g){
        $line =~ s/$1/ /g;
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($line =~ m/[\<.+\>]/g){
        $line =~ s/[\<.+\>]/ /g;
    }
    et plein d'autres. bref help!!!!

    merci d'avance.

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    Bonjour,
    tout d'abord, en général html et expressions régulières est une recette pour une bonne migraine, il existe des modules comme HTML:: Parser pour se faciliter la vie.

    Si tu souhaites juste éliminer les balises, ton expression est trop large, quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($line =~ /(<[^>]+>)/g) {
         $line =~ s/$1//;
    }
    te permettra de te débarrasser des balises et de toutes les informations qu'elles contiennent, mais ne gère pas les balises multilignes...

    J'espère que cela te mettra sur la voie

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 17
    Par défaut
    merci de ta réponse rapide

    je teste ça ( et je l'étudie aussi )

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    même avis que Gardyen: c'est généralement une mauvaise idée que de vouloir retraiter du HTML (ou du XML, d'ailleurs) avec des expressions régulières. Il est bien préférable d'utiliser des modules spécialisés.

    Tes tentatives comme m/(<.+>)/ sont fausses parce que le + est un quantificateur dit gourmand, ce qui veut dire que si tu as une chaîne du genre <toto>titi<tutu>, cela va reconnaître l'ensemble de la chaîne (depuis l'ouverture de la balise avant totojusqu'à la fermeture après tutu, et tu perdras donc titi, alors que du désires certainement traiter chaque balise séparément.

    Cela dit, si tu veux juste retirer des balises ne débordant pas d'une ligne sur une autre, tu peux essayer ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ligne =~ s/<[^>]+>//g;  # reconnaît une ouverture, suivi d'un nombre quelconque de caractères autre que des fermetures, suivi d'une fermeture
    ou éventuellement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ligne =~ s/<.+?>//g; # Quantificateur +?  non-gourmand s'arrêtant à la première fermeture trouvée

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 17
    Par défaut
    Merci beaucoup à vous deux !!
    çela marche correctement.


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

Discussions similaires

  1. regex perl fichier
    Par crow56 dans le forum Langage
    Réponses: 3
    Dernier message: 01/09/2015, 10h58
  2. Ouvrir un fichier Html avec Perl
    Par ash_rmy dans le forum Langage
    Réponses: 6
    Dernier message: 09/11/2009, 11h44
  3. [Regex perl] Matcher un gros fichier
    Par osoumayaj dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 18/01/2007, 09h37
  4. Réponses: 7
    Dernier message: 21/02/2006, 17h43
  5. Réponses: 7
    Dernier message: 08/07/2004, 14h47

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