regex 使用正则表达式替换以“.js”结尾但不是“min.js”的字符串的后缀

r9f1avp5  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(80)

假设infile是一个变量,保存输入文件的名称,同样outfile保存输出文件的名称。如果infile以.js结尾,我想替换为.min.js,这很容易。

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

字符串
但我的问题是,如果infile.min.js结尾,那么我不希望替换发生。(否则,我将以.min.min.js结束。)
如何使用正则表达式来实现这一点?

dluptydi

dluptydi1#

你想做一个否定的lookbehindAssert。比如说

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

字符串
你可以在这里找到更多关于这一点:http://docs.python.org/library/re.html#regular-expression-syntax

lc8prwob

lc8prwob2#

对于如此简单的任务,不需要正则表达式。字符串方法可以更具可读性,例如:

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

字符串

相关问题