一些简单的正则表达式用于重命名文件

时间:2011-09-08 17:55:33

标签: regex

我对一堆我想改变的文件有一个命名约定,所以我使用的是Metamorphose程序。它使用正则表达式来选择文件,并使用正则表达式基于替换选择性地更改文件名的部分。

我在替换我的文件名的一部分时遇到了一些问题(我昨晚管理了它,但忘记了我键入的内容)。基本上我想在“) - ”之后瞄准所有东西并擦拭它。

例如:“IMG2061211-(2011.09.08)-shot for web”我想定位“为网络拍摄”并摆脱它。此值有时会更改并有数字。

我可以使用(?:\)-)+.*选择所有文件,但我一直无法选择结尾部分来替换任何内容。

编辑特异性:

我基本上已经多次使用文件名来替换不同的部分,并且想知道是否有更好的方法去做。

文件名的一个例子是:Verdrahtung-Fibre_Optik-(RR01612)-XVF221-2011我想要实现的是不那么愚蠢的东西。我只想实现Verdrahtung - Fibre Optik [RR01612]

我一直在逐步进行,使用\)-.*删除)-并将其替换为]。 然后,我使用\(删除-(并将其替换为[。 然后我将任何_归零。

还有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

您可以搜索\)-.*并替换为)

这将删除文件名中第一个)-后的所有内容。

如果Metamorphose支持外观断言,那么搜索

会更安全一点
(?<=\))-(?:(?!\)-).)*

并且一无所获。这将删除文件名中最后一个)-之后的所有内容。

编辑:至于您的示例,您可以搜索

(.*)-\(([^)]*)\)-.*

并将其替换为

$1 [$2]

(如果这不起作用,请尝试\1 [\2])。这会将Verdrahtung-Fibre_Optik-(RR01612)-XVF221-2011更改为Verdrahtung-Fibre_Optik [RR01612]。用空格替换下划线必须在第二步中完成,除非总有一个下划线。

答案 1 :(得分:0)

^([^\)]+)-(.*)$然后\ 1给出'IMG2061211-(2011.09.08)',\ 2给出'shot for web'。

另外,请查看Regex Tester

答案 2 :(得分:0)

http://regexrenamer.sourceforge.net/

试试这个,这将解决所有主要的正则表达式模式