Предположим, что infile - это переменная, содержащая имя входного файла, а также выходной файл для выходного файла. Если infile заканчивается на .js, я бы хотел заменить его на .min.js, и это достаточно просто (я думаю).
Outfile = re.sub (r '\ b.js $', '.min.js', infile)
Но у меня вопрос в том, что если infile заканчивается на .min.js, то я не хочу, чтобы произошла подмена. (В противном случае я получу .min.min.js) Как я могу добиться этого, используя регулярное выражение?
PS: Это не домашнее задание. Если вам интересно, для чего это нужно: это небольшой скрипт на Python для массового сжатия файлов JavaScript в каталоге.






Вы хотите сделать утверждение отрицательного просмотра назад. Например,
outfile = re.sub(r"(?<!\.min)\.js$", ".min.js", infile)
Подробнее об этом можно узнать здесь: http://docs.python.org/library/re.html#regular-expression-syntax
Для таких простых задач регулярные выражения не нужны. Строковые методы могут быть более читаемыми, например:
if filename.endswith('.js') and not filename.endswith('.min.js'):
filename= filename[:-3]+'.min.js'
да, я знал это, но этот вопрос дает мне хороший шанс узнать больше о регулярном выражении.
Именно то, что я собирался сказать.