Forum Programmation.perl Extraction de texte

Posté par  .
Étiquettes : aucune
0
6
déc.
2006
Bonjour,

je suis débutant en perl et j'ai un peu de mal au niveau de l'extration de texte.

En fait, j'ai un texte du genre:
un deux trois mot1 quatre cinqmot2 six sept mot3 ....

et j'aimerai juste récuperer:
mot1
mot2
mot3
...

Ca doit etre simple mais je galere pas mal alors si vous avez une petite idee... merci
  • # Manque de précision !

    Posté par  . Évalué à 1.

    Précise de dont tu as besoin: repérer toutes les occurences de mot%d et les sortir du lot, ou virer toutes les occurences de nombre écrits en toute lettre ?
    Ce sont les 2 possibilités qui me viennent en tête, il y en a sûrement d'autres !
    • [^] # Re: Manque de précision !

      Posté par  . Évalué à 1.

      j'aimerai en fait, récupérer toutes les occurences de mot%d et les mettre par exemple dans un document texte.
  • # Comme ça vite fait

    Posté par  . Évalué à 3.

    Une solution, loin d'être optimisée... J'suis sûr que qqun va te faire un truc en 3 lignes ! Bon de toute façon tu verra peut être meme pas mon commentaire.... grrrrr je démarre encore à -1.

    --- SCRIPT PERL ---

    #!/usr/bin/perl

    my $inFile = $ARGV[0];
    my $searchWord = $ARGV[1];

    if(!open(FIC, $inFile)) {
        print "open error \n";
        exit(1);
    }

    @lines = <FIC>;
    close(FIC);

    foreach $i (@lines) {
        @words = split(/\s/, $i);
        
        foreach $j (@words) {
            if($j =~ /^$searchWord[0-9]+$/) {
                print $j."\n";
            }
        }
    }

    ---------------------------

    fichier_entrée contient :
    salut ca va toto1 bien toto2 quoi moi je toto3 sais toto4 pas quoi toto5 fouttre héhéhé ouai toto6

    $ ./script.pl fichier_entrée toto > fichier_sortie
    $ cat fichier_sortie
    toto1
    toto2
    toto3
    toto4
    toto5
    toto6
    • [^] # Re: Comme ça vite fait

      Posté par  . Évalué à 1.

      Merci pour ta réponse mais ce que je cherche a faire est un peu plus complexe.

      en fait, il se peut que mon texte soit de la forme

      toto1toto2toto3unexemple

      il n'y a aucun espace entre les mots et j'aimerai tout de meme récuperer
      toto1
      toto2
      toto3
      • [^] # Re: Comme ça vite fait

        Posté par  . Évalué à 4.

        use strict;
        use warnings;

        my $str = "toto1 toto2sdfvtoto3 toto9";

        my @arr = $str =~ /(toto\d)/g;

        print "ARR => " . join (",",@arr)

        Cyril
        • [^] # Re: Comme ça vite fait

          Posté par  . Évalué à 1.

          Pas mieux.
          Juste un check sur $#arr (si != -1 alors on affiche)

          L'expression régulière peut être plus complexe, si l'on recherche
          des mots différents /metro\d+|boulot\d+|dodo\d+/g

          Ca sent un peu le TP ou l'exo non ? ;)
        • [^] # Re: Comme ça vite fait

          Posté par  . Évalué à 1.

          Merci pour votre précieuse aide, grace a vous g réussi à faire ce dont j'avais besoin.

          Non, ce n'est pas pour un tp mais pour une utilisation pratique (récuperer toutes les urls d'une page d'apres le code source).

          En tout cas merci encore

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.