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 :

perl enlever paragraphe


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Débutant
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut perl enlever paragraphe
    Bonjour,
    Soit
    cat Desktop/poub
    Description
    Titre des livres

    et cat Desktop/calendarFromBasic.pl
    #! /usr/bin/perl -w
    #$fich_calendar_html ='/home/peter/Desktop/basic.html';
    $fich_calendar_html ='/home/peter/Desktop/poub';
    open(FICH, $fich_calendar_html);
    @occur = <FICH>;

    close FICH;
    $occur = join ('', @occur);
    $occur =~ s/\<.*?\>//g;
    $occur =~ s/Descrip.*?Titr/Titr/g;
    print $occur;
    exit;

    Je ne comprends pas pourquoi ça renvoie
    Description
    Titre des livres

    alors que par "$occur =~ s/Descrip.*?Titr/Titr/g;"
    ça devrait supprimer tout le paragraphe Description(= tout ce qui est entre Descrip et Titre) et renvoyer
    Titre des livres

    ? Qu'est-ce qui est faux dans ma commande

  2. #2
    Expert confirmé
    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
    Par défaut
    Par défaut "." reconnaît tout caractère sauf newline "\n".
    Généralement, si tu veux faire de la reconnaissance multiligne utilise les modificateurs /m et /s (/s fait en sorte que "." reconnaisse vraiment tous les caractères et /m modifie la signification de ^ et $ pour leur faire reconnaître les débuts/fin de ligne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s/Descrip .*? Titr/Titr/xmsg;
    --
    Jedaï

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 26
    Par défaut
    Citation Envoyé par Jedai Voir le message
    Par défaut "." reconnaît tout caractère sauf newline "\n".
    Généralement, si tu veux faire de la reconnaissance multiligne utilise les modificateurs /m et /s (/s fait en sorte que "." reconnaisse vraiment tous les caractères et /m modifie la signification de ^ et $ pour leur faire reconnaître les débuts/fin de ligne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s/Descrip .*? Titr/Titr/xmsg;
    --
    Jedaï


    Bonjour,

    Peux tu m'expliquer pourquoi dans la ligne de commande tu écris deux fois Titr stp ??

    Je cherche également à supprimer un paragraphe dans un fichier. Merci d'avance.

  4. #4
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Essaie d'utiliser les balises CODE signe dièse dans la barre d'outils.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s/Descrip .*? Titr/Titr/
    Peux tu m'expliquer pourquoi dans la ligne de commande tu écris deux fois Titr stp ??
    s/partie_1/partie_2/
    s pour 'substitution' qui remplace la partie 1 par la partie 2. Tu utilises Titr afin de limiter la partie à modifier et ensuite tu remplaces cette partie à modifier par le Titr à garder.

    Tu peux te renseigner sur la FAQ http://perl.developpez.com/faq/?page...B72#sectionB76


    Je cherche également à supprimer un paragraphe dans un fichier. Merci d'avance.
    En premier lieu, tu dois identifier ce qui définit le début et la fin de ce paragraphe (ou le début du paragraphe suivant), une structure dans ton texte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s/Debut_paragraphe_a_supprimer .*? Titre_paragraphe_suivant/Titre_paragraphe_suivant/xmsg;

  5. #5
    Membre confirmé
    Homme Profil pro
    Débutant
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut
    Parfait!
    Merci à vous!
    Et le x de -xmsg ? Dans man perl , je vois juste -x dir ?

  6. #6
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157

  7. #7
    Expert confirmé
    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
    Par défaut
    /xmsg n'a rien à voir avec -x (qui est un test de fichier).
    Les regexps en Perl peuvent être modifiées en rajoutant des options à la fin, par exemple /i rend la regexp insensible à la casse, /g rend le remplacement global (au lieu de n'avoir lieu qu'une fois, le remplacement est fait à toutes les occurences de la regexp), /m et /s ont à voir avec le traitement des chaînes de caractères multilignes (ici /s est indispensable, /m ne l'est pas, mais autant mettre les deux, c'est plus facile à retenir), /x permet d'écrire les regexp plus élégamment, etc ...
    Consulte la doc pour plus de détails (perlre par exemple).

    --
    Jedaï

Discussions similaires

  1. Enlever le terminale d'un logiciel perl converti en exe
    Par Blacksilver74 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 23/01/2014, 19h23
  2. Enlever le dernier caractère d'un paragraphe
    Par sanandreas1202 dans le forum VBA Word
    Réponses: 3
    Dernier message: 13/08/2012, 10h33
  3. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  4. [réseaux] Bench en Perl pour avoir le débit entre 2 pc
    Par Frich dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 22/05/2002, 17h22
  5. [web] Cherche un conseil pour un livre perl-tk
    Par Anonymous dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/04/2002, 15h35

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