如何用正则表达式仅替换文件名开头日期中的连字符?
正则解决方案
核心思路
只针对文件名开头的yyyy-mm-dd格式日期中的连字符进行替换,不影响后续内容里的“-”,以下是两种实用方案:
方案1:捕获组替换(兼容性强,适配多数工具)
匹配正则:
^(\d{4})-(\d{2})-(\d{2})
替换为:
$1$2$3
说明:
^锚定文件名开头,确保只匹配最前面的日期部分(\d{4})捕获4位年份,(\d{2})分别捕获2位月份和日期- 替换时直接拼接三个捕获组,自动去掉中间的“-”
示例效果:
原文件名:2002-01-24 This-is-a-file-001002
替换后:20020124 This-is-a-file-001002
方案2:正向预查替换(适合支持PCRE的工具,如Notepad++、Python等)
匹配正则:
-(?=\d{2}(?:-\d{2})?\s|$)
替换为:
(空字符串,直接删除匹配到的“-”)
说明:
-(?=...)正向预查规则,只匹配满足以下条件的“-”:- 后面跟着2位数字,可选再跟一个“-”加2位数字,最后是空格(对应日期后跟其他内容的情况)
- 或者“-”位于文件名末尾(对应纯日期命名的文件,如
2023-10-05)
- 无需捕获组,精准定位日期内的连字符直接删除
工具适配提示
- 批量重命名工具(如Windows批量重命名、Total Commander)优先选方案1,多数工具原生支持捕获组替换
- 文本编辑器处理文件名列表时,可根据工具支持的正则语法任选一种方案
内容的提问来源于stack exchange,提问作者pablo24
相关产品推荐
相关产品推荐

