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
# 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.