正则表达式:替换以'.js'结尾但不是'最小js'

2024-06-28 18:50:02 发布

您现在位置:Python中文网/ 问答频道 /正文

假设infile是一个保存输入文件名的变量,类似地,outfile是一个输出文件名的变量。如果infile以.js结尾,我想用替换。最小js这很容易(我想)。在

输出文件=re.sub公司(r'\b.js$','。最小js',填充)

但我的问题是infire是否以结尾。最小js,那么我不希望替换发生。(否则,我的结局是。最小最小js)如何通过使用正则表达式来实现这一点?在

附言:这不是家庭作业。如果您想知道这是为了什么:这是为了一个小python脚本对目录中的JavaScript文件进行大规模压缩。在


Tags: 文件re目录脚本文件名结尾js公司
2条回答

你想做一个否定的lookbehind断言。例如

outfile = re.sub(r"(?<!\.min)\.js$", ".min.js", infile)

您可以在这里找到更多信息:http://docs.python.org/library/re.html#regular-expression-syntax

对于这么简单的任务,不需要regexp。字符串方法更具可读性,例如:

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

相关问题 更多 >