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 :

Trouver un mot dans une chaine et l'afficher


Sujet :

Langage Perl

  1. #1
    Invité
    Invité(e)
    Par défaut Trouver un mot dans une chaine et l'afficher
    Dans mon script j'exiécute une commande qui met le résultat dans un tableau @resultat, en l'affichant ligne par ligne j'obtient ce résultat:

    HOPE XX file_name_of-the_file : STATUS
    HOPE XX file_name_of-the-file_2 : STATUS
    Maintenant, je veux que à chaque parcour de ligne il m'afiche uniquement le nom du fichier, c'est à dire pas toute la ligne mais uniquement file_name_of-the_file puis file_name_of-the-file_2... (si possible le mettre dans une variable)

    Merci de m'aider.

  2. #2
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    En perl quand on a problème comme celui-ci (extraction d'un motif dans une chaîne) il faut avoir le réflexe expressions régulières... Le site developpez et le web regorgent de tutoriel dessus et si tu veux continuer en Perl, c'est un passage obligé.

    Enfin bref voici un petit exemple sur tes données (en supposant que tu ais toujours le même format)
    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
    19
    20
     
    use strict;
    use warnings;
     
    my @resultats = ("HOPE XX file_name_of-the_file : STATUS",
                     "HOPE XX file_name_of-the-file_2 : STATUS");
     
     
    foreach my $resultat(@resultats){
        if($resultat =~ /^HOPE\s+     #commence par HOPE suivi de 1 à n espaces
                         X{2}\s+      #deux X majuscules suivi de 1 à n espaces
                         (.+)\s+      #le nom du fichier que l'on capture
                         :\s+         #le car : suivi de 1 à n espaces
                         STATUS$/x){  # termine par STATUS
            print "Fichier : $1\n";
        }
        else{
            print "$resultat n'a pas le bon format\n";
        }
    }
    Pour ce qui est de sauvegarder tes noms de fichiers, tu devrais pouvoir te débrouiller avec cet exemple.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci bien, ça m'a beaucoup aidé, je me suis fait quelques exercies en matières d'expression regulière, mais je ne suis pas très pro, espérant l'etre bientot.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Comment trouver un mot dans une chaine ?
    Par totoAussi dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 06/05/2012, 09h38
  3. trouver les mots dans une chaine
    Par thierry007 dans le forum VB.NET
    Réponses: 5
    Dernier message: 21/04/2010, 09h30
  4. [RegEx] trouver un mot dans une chaine de caractère
    Par starr dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2007, 15h36

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