Vu que maintenant je dois faire ca en perl , je repose cette question mais dans le forum Perl !!!!! (Merci à ceux qui m'ont répondu en bash ...)
Je dois parser cette variable
7845124512200904091025.pdf de façon à récupérer
la chaine 20090409
Il faut que je commence impérativement par la fin car la chaine avant 2009 ..
est variable.
Pourriez vous m'aider, je galère un peu
Merci d'avance
Forum Programmation.perl Parser une variable en Perl
14
avr.
2009
# Miam perl !
Posté par arthurr (site web personnel) . Évalué à 4.
#!/usr/bin/perl
my $nom='7845124512200904091025.pdf';
if($nom=~m/(\d{8})\d{4}\.pdf$/){
print "$1\n";
}
# Parser une variable en Perl
Posté par gnial29 . Évalué à 1.
L'extension n'est pas toujours pdf ca peut etre autre chose
[^] # Re: Parser une variable en Perl
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
Si tu peux cumuler les extensions (foo.tar.gz), je peux te répondre aussi, mais ça ne sera plus gratuit :)
[^] # Re: Parser une variable en Perl
Posté par arthurr (site web personnel) . Évalué à 3.
#!/usr/bin/perl
my $nom='7845124512200904091025.pdf';
if($nom=~m/(\d{8})\d{4}[\.a-zA-Z]*$/){
print "$1\n";
}
et c'est gratuit ;)
[^] # Re: Parser une variable en Perl
Posté par ✅ ffx . Évalué à 2.
[^] # Re: Parser une variable en Perl
Posté par arthurr (site web personnel) . Évalué à 1.
Alors pas de mp3 !
sinon il y a un truc crade mais qui marche :
#!/usr/bin/perl
my $nom='7845124512200904091025.mp3.gz.tar.pdf.paf';
my $no_dot=(split /\./,$nom)[0]; # recup le premier element du split
if($no_dot=~m/(\d{4})(\d{2})(\d{2})\d{4}$/){
print "Fichier : $nom\n";
print "Annee : $1\n";
print "Mois : $2\n";
print "Jour : $3\n";
}
# Parser une variable en Perl
Posté par gnial29 . Évalué à 1.
Et comme c'est gratuit aprés j'arrete ( et je vais bouquiner un peu Perl même si RegExp m'a toujours foutu un mal de tronche !!!)
#!/usr/bin/perl
my $nom='7845124512200904091025.pdf';
if($nom=~m/(\d{8})\d{4}[\.a-zA-Z]*$/){
print "$1\n";
}
et si je veux en sortie ?:
$nom $1 (exemple : 7845124512200904091025.pdf 2009 04)
Puisse ta gratuité répondre à ma question et aprés je disparais ...
Merci d'avance
[^] # Re: Parser une variable en Perl
Posté par arthurr (site web personnel) . Évalué à 1.
#!/usr/bin/perl
my $nom='7845124512200904091025.pdf';
if($nom=~m/(\d{4})(\d{2})(\d{2})\d{4}[\.a-zA-Z]*$/){
print "Fichier : $nom\n";
print "Annee : $1\n";
print "Mois : $2\n";
print "Jour : $3\n";
}
# Parser une variable en Perl
Posté par gnial29 . Évalué à 0.
Par contre je souhaiterai que $nom et $1, $2 soient sur une même ligne
sans retour à la ligne
(cf ex: 7845124512200904091025.pdf 2009 04 ..... )
quesaco ?
[^] # Re: Parser une variable en Perl
Posté par arthurr (site web personnel) . Évalué à 2.
#!/usr/bin/perl
my $nom='7845124512200904091025.pdf';
if($nom=~m/(\d{4})(\d{2})(\d{2})\d{4}[\.a-zA-Z]*$/){
print "Fichier : $nom $1 $2\n";
}
c'est juste un print ... le $1 est la premiere expression "matchee" avec les parenthese (\d{4}), $2 la seconde, ...
# Parser une variable en Perl
Posté par gnial29 . Évalué à 1.
Merci Arthurr pour tout.
Il fallait juste que je rajoute un chop $nom avant le print ( mon fichier devait contenir un retour à ligne).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.