正则表达式删除文件名中的特定文本

时间:2018-06-04 19:19:44

标签: regex pdf

我正在使用一个文件传输工具,允许使用正则表达式重命名文件,因为它们被复制到一个新文件夹中(所以我只使用正则表达式而不是代码库)我有一大套具有特定命名约定的文件,文件名末尾带有版本号。我的目标是删除此文件版本号以及下划线。

以下是文件名的一些示例:

  • 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

我正在尝试删除版本号,以便新服务器上的文件命名约定始终相同。我对正则表达式并不擅长,这是我到目前为止所做的尝试,但无济于事:

使用_[^_]+$,它会选择最后一个下划线以及.pdf扩展名。

使用\_(.*?)\.选择第一个下划线直到句号。

如何在删除该文本但保留期限之前选择最后一个下划线?也许有更好的方法?提前谢谢!

2 个答案:

答案 0 :(得分:0)

尝试在此处使用正则表达式:

  

_ [0-9] * \。

并将其替换为

  

答案 1 :(得分:0)

如果你的正则表达式运动具有正面的前瞻性,你可能会像这样工作并替换它什么

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

<强> Demo

说明:

  • (_\d+)将使用下划线后跟一个或多个数字
  • (?=\.pdf$)将匹配为文件名末尾.pdf扩展名的正面预测