Supprimer extension fichier - Perl - Programmation
Marsh Posté le 16-06-2015 à 21:53:50
Code :
|
ou un truc du genre. Ou alors avec un split() mais attention si le nom de fichier contient d'autres points (toto.tata.txt).
Marsh Posté le 16-06-2015 à 22:24:42
+1 pour gilou, c'est bien plus universel.
edit: ou les deux melangés: $fichier=~s/\.[^.]+$//;
Marsh Posté le 16-06-2015 à 22:51:16
Sauf que la tu va supprimer le nom d'un fichier comme .emacs
A+,
Marsh Posté le 16-06-2015 à 23:06:29
Bien vu gilou!
Voyons, peut-être ainsi?
Code :
|
Marsh Posté le 17-06-2015 à 02:48:12
Pourquoi pas, mais ceci:
$fichier=~s/(?<=!\.)\.[^.]+$//;
serait peut être mieux, ou son équivalent avec ma ligne:
$filename =~ s/(.*[^.])\.[^.]+/$1/;
A+,
Marsh Posté le 17-06-2015 à 07:29:45
Bonjour à tous les deux.
Merci beaucoup pour vos réponses, ça fonctionne à merveille.
Marsh Posté le 17-06-2015 à 18:11:16
Merci gilou, j'apprends pleins de trucs perl en regardant tes réponses!
Marsh Posté le 20-06-2015 à 03:13:29
gilou a écrit : Pourquoi pas, mais ceci: |
Corrections:
pour la ligne avec s/(.*[^.])\.[^.]+/$1/;
J'avais oublié le $ final, nécessaire puisque je n'ai plus .* en fin de regexp
ce devrait donc être
$filename =~ s/(.*[^.])\.[^.]+$/$1/;
Pour la ligne avec s/(?<=!\.)\.[^.]+$//;
il y avait clairement une faute de frappe (le copier coller hâtif à encore frappé): c'était (?<!\.) avec un look-behind négatif que je voulais.
Mais ça marche pas, car un tel contexte est matché par le vide, et l'ensemble matcherait un nom comme ".toto"
Il vaut mieux donc un look-behind positif:
$fichier=~s/(?<=[^.])\.[^.]+$//;
Note: (?<=!\.) ne déclenchait pas d'erreur sur mes essais, mais je n'ai aucune idée de la manière dont c'était interprété par Perl, et, c'était hautement risqué d'employer ça
A+,
Marsh Posté le 16-06-2015 à 18:42:12
Bonjour,
Pouvez-vous m'aider à supprimer l'extension d'un fichier ?
Exemple : J'ai un fichier "toto.txt". J'aimerais récupérer juste "toto".
Merci d'avance pour vos réponses.