OVH Cloud OVH Cloud

Présentation et expression régulière

4 réponses
Avatar
Blue Boy Maxime
Salut,

je me pr=E9sente : Blue Boy Maxime, informaticien g=E9n=E9raliste dans une
PME. Je programme peu, r=E9cemment en Perl. Ce qui est tr=E8s pratique
sous Linux pour le traitement de fichier.

Je cherche un expression r=E9guli=E8re pour d=E9terminer l'extension d'un
fichier.
Donc , les trois derniers caract=E8res d'une chaine, pr=E9c=E9d=E9s d'un
point.

J'ai un peu cherch=E9, mais point trouv=E9.

Auriez vous des id=E9es ?

Pour par exemple remplacer .doc par .txt.


Bien =E0 vous.

Blue Boy Maxime

Et si vou savez ce que signifie "mongueur"...

4 réponses

Avatar
Mark Clements
Blue Boy Maxime wrote:
Salut,

je me présente : Blue Boy Maxime, informaticien généraliste dans une
PME. Je programme peu, récemment en Perl. Ce qui est très pratique
sous Linux pour le traitement de fichier.

Je cherche un expression régulière pour déterminer l'extension d'un
fichier.
Donc , les trois derniers caractères d'une chaine, précédés d'un
point.

J'ai un peu cherché, mais point trouvé.

Auriez vous des idées ?

Pour par exemple remplacer .doc par .txt.



cherche

File::Basename

à

http://search.cpan.org

C'est plus facile d'utiliser une module que le faire avec un regexp,
mais quelque chose comme

my $filename = "document.doc";
$filename =~ s/(w+).w{1,3}$/$1.txt/g;

devrait marcher.

Bien à vous.

Blue Boy Maxime

Et si vou savez ce que signifie "mongueur"...


C'est un corruption d'un mot anglais monger - fishmonger, ironmonger etc

http://www.linux-france.org/prj/jargonf/M/mongueur.html

Mark

Avatar
Patrice Karatchentzeff
Mark Clements writes:

Blue Boy Maxime wrote:


[...]

Je cherche un expression régulière pour déterminer l'extension d'un
fichier.
Donc , les trois derniers caractères d'une chaine, précédés d'un
point.
J'ai un peu cherché, mais point trouvé.
Auriez vous des idées ?
Pour par exemple remplacer .doc par .txt.



cherche

File::Basename

à

http://search.cpan.org

C'est plus facile d'utiliser une module que le faire avec un regexp,
mais quelque chose comme

my $filename = "document.doc";
$filename =~ s/(w+).w{1,3}$/$1.txt/g;

devrait marcher.


Non : c'est le contraire qu'il cherche : la fin, pas le début...

La regexp est ....$

Tu peux remplacer les trois derniers point spar les caractères que tu
cherches vraiment (alpha, chiffres, etc.)

Man perlre, perlrequick pour avoir les bonnes abréviations suivant ce
que tu cherches...

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       


Avatar
Blue Boy Maxime



C'est plus facile d'utiliser une module que le faire avec un regexp,
mais quelque chose comme

my $filename = "document.doc";
$filename =~ s/(w+).w{1,3}$/$1.txt/g;

devrait marcher.

Mark


Super, ça marche.
Il me reste à étudier ton code pour le comprendre.

Merci beaucoup.
A+
Blue Boy Maxime

Avatar
Paul Gaborit
À (at) 22 Feb 2006 11:49:28 -0800,
"Blue Boy Maxime" écrivait (wrote):
Je cherche un expression régulière pour déterminer l'extension d'un
fichier.
Donc , les trois derniers caractères d'une chaine, précédés d'un
point.

J'ai un peu cherché, mais point trouvé.

Auriez vous des idées ?

Pour par exemple remplacer .doc par .txt.


Si vous êtes sûre que votre extension est constituée *exactement* d'un
point suivi de *trois* lettres, il est beaucoup plus simple et rapide
d'utiliser la fonction 'substr' :

my $filename = "toto.doc";
substr($filename, -3) = "txt";

Si vous considérez au contraire que l'extension est tout ce qui suit
le dernier point du nom de votre fichier (si elle existe) alors :

my $filename = "toto.html";
$filename =~ s/.[^.]*$/.txt/;


Ceci étant, la notion d'extension n'est pas clairement définie de
manière portable...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>