Récupérer une chaine de caractère à droite
Mel14141
Messages postés
20
Statut
Membre
-
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je débute complètement en perl et j'ai besoin d'aide sur un sujet.
J'ai créé un petit programme en perl qui permet :
- d'aller dans un répertoire
- de lire tous les fichiers qui s'y trouvent
- de créer un fichier excel
- de mettre dans ce fichier excel certaines données
Etant donné que ces données sont des log je n'ai pas besoin de tout récupérer.
Je m'explique :
sur une ligne j'ai : "blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli "
Je voudrais récupérer la chaine derrière le "-" soit "bliblibliblibliblibliblibli bliblibliblibliblibliblibli " sachant que je récupére la totalité de la chaine dans une variable qui s'appelle "$totally".
Merci d'avance
Je débute complètement en perl et j'ai besoin d'aide sur un sujet.
J'ai créé un petit programme en perl qui permet :
- d'aller dans un répertoire
- de lire tous les fichiers qui s'y trouvent
- de créer un fichier excel
- de mettre dans ce fichier excel certaines données
Etant donné que ces données sont des log je n'ai pas besoin de tout récupérer.
Je m'explique :
sur une ligne j'ai : "blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli "
Je voudrais récupérer la chaine derrière le "-" soit "bliblibliblibliblibliblibli bliblibliblibliblibliblibli " sachant que je récupére la totalité de la chaine dans une variable qui s'appelle "$totally".
Merci d'avance
2 réponses
-
Salut,
Si tu as un seul-
séparé par un espace avant et après, c'est assez facile :
#!/usr/bin/perl use strict; use warnings; my $st = "blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli "; if ($st =~ /\s-\s(.*)$/) { my $totally = $1; # do something with $totally } else { print "Error, incorrect format in $st\n"; }
Dal-
-
-
autres précisions : ce n'est pas une "ligne de commande" mais un script Perl, à mettre dans un fichier texte et à faire exécuter par ton interpréteur Perl, et ce n'est pas ton code, c'est le mien :-)
ou celui de Felice_
P.S.
Salut Felice_ ! c'est sympa d'avoir un contributeur sur le forum Perl, et qui en plus est lettré en Perl 6 ;-) -
-
-
-
Bonjour :
Soit tu coupes avec la fonction « split » :
En Perl 5 :use strict; use warnings; my $totally = 'blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli '; my @donnees = split(' - ', $totally); print $donnees[1] . "\n";
En Perl 6 :my $totally = 'blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli '; my @donnees = split(' - ', $totally); put @donnees[1];
Soit tu utilises les expressions régulières :
En Perl 5 :my $totally = 'blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli '; $totally =~ /^[^-]+ - (.+)$/; print $1 . "\n";
En Perl 6 :my $totally = 'blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli '; $totally ~~ /^.+ \- (.+)$/; put $0;