正则表达式 - 将文件重命名为文件名中的最高分辨率

标签 regex file rename

我正在使用名为 Advanced Renamer 的应用程序来重命名我的视频文件。我尝试通过选择可用的最高质量来重命名视频文件,这是在当前文件名本身中指定的。

例如,原始的未压缩文件名如下所示:1080P,720P,480P,240P,_123456789.mp4

我使用正则表达式将此示例文件重命名为:1080P_123456789.mp4

但是,我现在使用的正则表达式 .*(?=1080P|720P|480P|240P) 的结果无法正常工作,它采用最低质量而不是最高质量: 240P,_123456789.mp4

正确的例子:

1080P,720P,480P,240P,_0987654321.mp4  --> 1080P_0987654321.mp4
720P,480P,_0987654321.mp4             --> 720P_0987654321.mp4
480P,240P,_0987654321.mp4             --> 480P_0987654321.mp4

我的正则表达式给我的错误示​​例:

1080P,720P,480P,240P,_0987654321.mp4  --> 240P_0987654321.mp4
720P,480P,_0987654321.mp4             --> 480P_0987654321.mp4
480P,240P,_0987654321.mp4             --> 240P_0987654321.mp4

编辑:解决方案

^.*?(1080P|720P|480P|240P).*?(_\d+\.mp4).*$
OR 
^.*?(\d+P).*?_(\d+\.mp4)\S*
OR
.*?(\d+P)[^.]*_(\d+\.mp4)\S*

最佳答案

试试这个 ^(1080P|720P|480P|240P).*,(.*)^ 将匹配行中的第一次出现。

关于正则表达式 - 将文件重命名为文件名中的最高分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60127252/

相关文章:

regex - 使用 sed 和正则表达式捕获 url 的最后一部分

regex - Vim:当使用\_ 跨多行匹配字符串时。在正则表达式中,:yank 命令仅适用于第一行

mysql - 基于 REGEX 的替换在 MySQL 过程中不起作用

variables - Stata:通过移动后缀重命名变量

windows - 文件复制和重命名

javascript - 具有包裹多个组的可选组的正则表达式对于未采用的分支返回未定义

java - 合并文件中的行以与给定的 header 相对应

C++ 从包含字符的文件中读取数字

java - 对文本文件中的值求和并打印它们

batch-file - 如何批量用新的不同名称重命名路径中的文件?