Регулярное выражение удаляет определенный текст в имени файла - PullRequest
0 голосов
/ 04 июня 2018

Я использую инструмент передачи файлов, который позволяет использовать Регулярное выражение для переименования файлов, когда они копируются в новую папку (поэтому я работаю только с Регулярным выражением, а не внутри базы кода). У меня есть большой наборфайлы с определенным соглашением об именах с номером версии в конце имени файла.Моя цель - удалить номер версии этого файла вместе с подчеркиванием.

Вот несколько примеров имен файлов:

  • the_file_name_DS_017_EN_35.pdf
  • the_file_name_DS_037_SP_35.pdf
  • different_filename_DS_EN_5.pdf

Я хочу изменить их на:

  • the_file_name_DS_017_EN.pdf
  • the_file_name_DS_037_SP.pdf
  • different_filename_DS_EN.pdf

Я пытаюсь удалить номер версии, чтобы соглашение об именовании файлов на моем новом сервере всегда было одинаковым.Я не очень хорошо разбираюсь в regex, и это то, что я пробовал до сих пор, но безрезультатно:

Используя _[^_]+$, он выбирает последнее подчеркивание вместе с расширением .pdf.

Используя \_(.*?)\. он выбирает первое подчеркивание до точки.

Как выбрать последнее подчеркивание до точки, удаляя этот текст, но сохраняя точку?Может быть, есть лучший метод?Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Если вы работаете с двигателем регулярного выражения с положительным прогнозом, вы можете поработать с ним следующим образом и заменить его ничем

(_\d+)(?=\.pdf$)

Демо

Объяснение:

  • (_\d+) будет следовать за подчеркиванием, за которым следуют одна или несколько цифр
  • (?=\.pdf$) будет соответствовать в качестве положительного взгляда расширению .pdf в концеимя файла
0 голосов
/ 04 июня 2018

TRY для использования регулярного выражения здесь:

_ [0-9] * \.

и замените его на

.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...