Регулярное выражение: замените суффикс строки, заканчивающейся на «.js», но не «min.js» - PullRequest
3 голосов
/ 10 января 2009

Предположим, что infile - это переменная, содержащая имя входного файла и аналогично outfile для выходного файла. Если infile заканчивается на .js , я бы хотел заменить на .min.js , и это достаточно просто (я думаю).

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

Но мой вопрос: если инфиль заканчивается в .min.js , тогда я не хочу, чтобы произошла замена. (В противном случае я получу .min.min.js ). Как мне добиться этого с помощью регулярного выражения?

PS: Это не домашняя работа. Если вам интересно, для чего это нужно: это для небольшого скрипта на python для массового сжатия файлов JavaScript в каталоге.

Ответы [ 2 ]

9 голосов
/ 10 января 2009

Вы хотите сделать отрицательный взгляд за утверждением. Например,

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

Подробнее об этом можно прочитать здесь: http://docs.python.org/library/re.html#regular-expression-syntax

3 голосов
/ 10 января 2009

Для простых задач нет необходимости в регулярных выражениях. Строковые методы могут быть более читабельными, например:

if filename.endswith('.js') and not filename.endswith('.min.js'):
    filename= filename[:-3]+'.min.js'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...