首页 > 解决方案 > 复杂文件名的正则表达式

问题描述

多年来,我一直试图理解 RegEx,但它对我来说并不奏效。我有一堆不同模式的文件。我正在运行 Windows 10,并且正在尝试 RegexRenamer 和 Bulk Rename Utility。示例文件

文件 (1982)(Day Storm)(Disk 2 of 2)[1]
File Name (Midnight)[a](Tape 1 of 2)(198x)
File Name, The (-)(de)(All the Way Home) (磁带 3)

我一直在尝试找到一个语句或最少数量的语句,只保留文件名的三种不同形式(基本上任何不在括号中的),同时去掉所有括号及其内容,不包括任何括号,包括 Tape 或磁盘。这个照顾一年:\((.{4})\)

我正在研究这个以消除其他所有内容:\((.+)\)|^\((?!\[\D])\)*$
我似乎无法将我的大脑包裹在它周围。我一直在阅读,现在正在谈论前瞻和后视。任何人都可以帮忙吗?

标签: regex

解决方案


我不熟悉您的应用程序,但如果支持前瞻,您应该能够使用否定前瞻来删除tapedisc匹配。

这应该适用于您:

\((?!(Tape|Disk))[^)]+\)

用空替换所有匹配项。

https://regex101.com/r/vWJloG/2/


推荐阅读