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 pour enlever les comments HTML


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 55
    Points : 44
    Points
    44
    Par défaut Regex pour enlever les comments HTML
    Bonjour,
    Je voulais faire une regex pour enlever les commentaires dans un fichier HTML. Voilà ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $page =~ s/\<!--.*--\>//sig
    Mais ceci supprimait presque la page entière. Quand j'ai fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $page =~ s/\<!--.*?--\>//sig
    donc avec le ? ça fonctionnait. Je ne comprends pas pourquoi ça ne marchait pas avant. * veut bien dire "0 ou plusieurs fois"?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par pongping Voir le message
    Je ne comprends pas pourquoi ça ne marchait pas avant. * veut bien dire "0 ou plusieurs fois"?
    Oui, mais * est glouton, c'est à dire qu'il cherche toujours à capturer le plus de caractère possible correspondant à ce qui le précède, et il ne revient en arrière que si la regex échoue, autrement dit dans ton cas, il capturait l'intégralité du document à partir du premier "<!--" (puisque le point avec /s désigne vraiment n'importe quoi), puis il relâchait un caractère à la fois parce que la regex échouait, jusqu'au moment où il avait relâché suffisamment de caractères pour arriver au dernier "-->" du document...
    Au contraire *? est paresseux, il va toujours prendre le moins possible de caractères et n'en prendra un de plus que si le reste de la regex échoue, donc là la regex commence au premier "<!--" du document, .*? ne prend aucun caractère, "-->" échoue, donc .*? prend un caractère de plus, la regex échoue encore, jusqu'au moment où .*? a pris suffisamment de caractère pour arriver au premier "-->" après le "<!--".

    Autrement dit * prendra toujours la chaîne la plus longue qui satisfera la regex tandis que *? prendra toujours la plus courte qui la satisfera.

    C'est plus clair ?

    --
    Jedaï

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 55
    Points : 44
    Points
    44
    Par défaut
    Oui, merci beaucoup je commence à comprendre.

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

Discussions similaires

  1. [RegEx] Regex pour capter les balises html
    Par malgache dans le forum Langage
    Réponses: 7
    Dernier message: 30/01/2013, 13h44
  2. treplace regex pour enlever les balises html
    Par briceg dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 23/10/2009, 10h47
  3. Regex pour enlever les chemin dans un binaire
    Par rgesnot dans le forum Langage
    Réponses: 1
    Dernier message: 19/09/2007, 16h03
  4. [RegEx] Problème pour enlever les tags javascript d'une source HTML
    Par Easyweb dans le forum Langage
    Réponses: 4
    Dernier message: 25/02/2006, 02h10
  5. Script pour enlever les balises html
    Par Scratch48 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 02/11/2005, 17h16

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