是否有可能在正则表达式中找到并替换列表?

时间:2014-09-08 09:29:29

标签: regex

我需要在File Renamer中使用正则表达式替换文件名中方括号中的多个不同术语。我可以单独完成它们,但它非常耗时,有没有办法从列表中搜索和替换?

例如,我需要从文件名中删除方括号中的所有扩展名,如下所示:

filename[txt].txt    
File_Name(Blah)[pdf].pdf
Eman Elif - [abcdef 00] - whaterver [doc].doc

感谢。

编辑:道歉,我是新来的,不知道我的方式。我的例子应该更加多样化,并非所有格式都是:[ext] .ext。我更希望找到一种方法来匹配列表中的术语并替换为任何内容(因此术语被删除)类似于:

  

查找:[pdf],[txt],[doc],[V3.0],

     

REPLACE:

但当然这不起作用。有没有办法做到这一点?感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式来实现此目的:

\s?\[(txt|pdf|doc|V3\.0)\]\s?

并保持替换字符串为空。您可以在()括号内添加任意数量的字符串,用|管道符号分隔每个字符串。请务必使用.转义\等特殊字符。

例如:V3\.0

Example on regex101

答案 1 :(得分:0)

您可以使用捕获组和反向引用来匹配这些:

s/\[([^]]*)\]\.\1$/.$1/

这匹配方括号内的一个单词后跟一个点和那个单词,并用点后跟单词替换它。

相关问题