2009-01-09 8 views
3

Supposons que infile est une variable contenant le nom d'un fichier d'entrée, et de même fichier de sortie pour le fichier de sortie. Si l'infile se termine par .js, je voudrais remplacer par .min.js et c'est assez facile (je pense).Expression régulière: remplace le suffixe d'une chaîne se terminant par '.js' mais pas 'min.js'

outfile = re.sub (r \ b.js $ ', » .min.js', infile)

Mais ma question est de savoir si infile se termine par .min.js, puis Je ne veux pas que la substitution ait lieu. (Sinon, je finirai par .min.min.js) Comment puis-je accomplir cela en utilisant une expression régulière?

PS: Ce ne sont pas des devoirs. Si vous êtes curieux de savoir à quoi cela sert: ceci est pour un petit script python de faire une compression de masse de fichiers JavaScript dans un répertoire.

Répondre

3

Pour les tâches de ce simple, il n'y a pas besoin de regexps. Méthodes de chaîne peuvent être plus lisibles, par exemple .:

if filename.endswith('.js') and not filename.endswith('.min.js'): 
    filename= filename[:-3]+'.min.js' 
+0

oui, je le savais, mais la question me donne une bonne chance d'en savoir plus sur regex. –

Questions connexes