首页 > 解决方案 > 用于截断文件名的正则表达式

问题描述

我在整理一个正则表达式以在一定长度后修剪文件名时遇到了一些麻烦。这被用于同时重命名大量文件,太多而无法手动合理地重命名。不幸的是,我们的一些员工喜欢在文件名的末尾留下注释,这是我们希望删除的内容。

示例文件名,所有这些都存在并且使匹配出现问题。

  • ABC - A11B11 - Note.txt
  • ABC - A22B22(注).txt
  • ABC - A33B33 | 笔记.txt

所有文件的长度都相同,特别是 16 个字符。第一部分将是纯字母,特别是客户帐户名称。第 2 部分是数字和字母的组合,即案例 ID 编号。第二个序列的组成因每个文件名而异,但始终为 6 位长,并且始终是 2 个字母和 4 个数字的混合。

我尝试使用正则表达式来查明第二个序列中的数字/字母模式,然后删除所有内容。我还尝试利用 16 个字符的长度来删除所有超过 16 个字符。不幸的是,我对正则表达式并不是特别擅长,而且我没有取得太大进展。我的大多数尝试都被认为是有效的正则表达式搜索,但给出了不正确的匹配结果。

任何我能得到的帮助将不胜感激。

标签: regex

解决方案


我能想到的最干净的正则表达式替换是:

Find:    ^([A-Z0-9]+ - [A-Z0-9]+).*(\.\w+)$
Replace: $1$2

演示

这种方法是匹配并捕获要保留的文件名的前两部分。它还捕获文件扩展名。然后,在替换中,我们形成了新的文件名,有效地删除了名称第二部分之后可能出现的任何注释。


推荐阅读