假设infile是一个包含输入文件名称的变量,同样也是输出文件的outfile。如果infile以 .js 结尾,我想用 .min.js 替换,这很容易(我认为)。
outfile = re.sub(r'\ b.js $','。min.js',infile)
但我的问题是,如果infile以 .min.js 结尾,那么我不希望替换发生。 (否则,我最终将使用 .min.min.js )如何使用正则表达式实现此目的?
PS:这不是作业。如果你很好奇这是为了什么:这是一个小的python脚本在目录中对JavaScript文件进行大规模压缩。
答案 0 :(得分:9)
你想做一个负面的后视断言。例如,
outfile = re.sub(r"(?<!\.min)\.js$", ".min.js", infile)
您可以在此处找到有关此内容的更多信息:http://docs.python.org/library/re.html#regular-expression-syntax
答案 1 :(得分:3)
对于这么简单的任务,不需要regexp。字符串方法可以更具可读性,例如:
if filename.endswith('.js') and not filename.endswith('.min.js'):
filename= filename[:-3]+'.min.js'