regex - 复杂文件名的正则表达式
问题描述
多年来,我一直试图理解 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])\)*$
我似乎无法将我的大脑包裹在它周围。我一直在阅读,现在正在谈论前瞻和后视。任何人都可以帮忙吗?
解决方案
我不熟悉您的应用程序,但如果支持前瞻,您应该能够使用否定前瞻来删除tape
和disc
匹配。
这应该适用于您:
\((?!(Tape|Disk))[^)]+\)
用空替换所有匹配项。
推荐阅读
- java - 如何在入站通道适配器中创建自定义轮询器?
- c# - 仅在 C# .NET Core 2.1 中更新分离实体的新字段
- javascript - 防止 prop 覆盖数据
- java - 从 JSON 的文件中删除一个 JSON 数据
- mysql - 将行值添加到总计 if 条件(不知道如何问这个)
- php - Woocommerce,PHP 7.2 函数 create_function() 已弃用
- angular - TurboTable延迟加载具有初始值的默认过滤器?
- css - 如何在引导程序中更改容器的固定宽度?
- php - 如何使用正则表达式自动完成随机 URL?
- python - 在 TensorFlow 中,如何断言列表的值在某个集合中?