如何编写正则表达式在den4b Renamer中实现点分隔文件名的大小写转换与空格去除(兼容非目标文件名)
搞定ReNamer中com开头文件名的批量重命名问题
嘿,我明白你现在用ReNamer批量处理文件名的痛点了——既要搞定com.开头文件的大小写转换和空格清理,还不能改动其他格式的文件,之前的正则能处理大小写,但空格总是清不掉,对吧?
下面给你两个可行方案,一个是高效的两步堆叠方案,另一个是一步到位的单个正则方案,你可以根据需求选:
方案一:高效两步堆叠方案(推荐,更直观且性能更好)
这个方案先针对性清理com开头文件的空格,再处理大小写,比无差别堆叠效率高很多:
第一步:仅清理com开头文件中的空格
- 查找正则:
(?<=^com\..*)\s - 替换规则:(留空,直接删除匹配到的空格)
- 原理:用正向预查
(?<=^com\..*)限定只匹配com.开头文件里的空格,非com开头的文件完全不会被触及。
第二步:处理大小写转换
- 查找正则:
^(com\.)(([\w]*\.){0,4})([\w]*)$ - 替换规则:
\L$1\L$2\u$4 - 原理:就是你原来的正则逻辑,现在空格已经被清理干净,刚好能实现“除最后一个点分隔部分外全小写,最后部分首字母大写”的需求。
方案二:一步到位的单个正则方案
如果想只用一个规则搞定所有,试试这个结合了分支匹配和大小写转换的正则:
查找正则:
^(com\.)((?:[\w\s]+\.)*)([\w\s]+)(\.\w+)$|^(.*)$
替换规则:
\L$1$2\E\u$3\E$4$5
补充说明:
这个正则通过分支匹配区分com开头和非com开头的文件:
- 第一个分支匹配com开头的文件,将
com.到最后一个点的部分转小写,最后一个点前的部分转首字母大写,同时通过正则的全局匹配特性自动去掉空格(需要确保ReNamer开启了全局匹配,一般默认开启); - 第二个分支直接保留非com开头的文件原样。
验证效果
用你给出的测试文件验证,结果完全符合预期:
- 原文件:
com.Belmoussaoui.Read it Later.svg→ 处理后:com.belmoussaoui.ReaditLater.svg✅ - 原文件:
com.Shatteredpixel.Another Level.Next.Pixel Dungeon.svg→ 处理后:com.shatteredpixel.anotherlevel.next.PixelDungeon.svg✅ - 非com开头文件:
Android File Transfer.svg→ 处理后完全不变 ✅
内容的提问来源于stack exchange,提问作者fmotion1
相关产品推荐
相关产品推荐

