Regex 是否可以从正则表达式中的列表中查找和替换?

Regex 是否可以从正则表达式中的列表中查找和替换?,regex,Regex,我需要使用文件重命名器中的正则表达式替换文件名中方括号中的多个不同术语。我可以单独做,但这非常耗时,有没有办法从列表中搜索和替换 例如,我需要从文件名中删除方括号中的所有扩展名,如下所示: filename[txt].txt File_Name(Blah)[pdf].pdf Eman Elif - [abcdef 00] - whaterver [doc].doc 谢谢 编辑:对不起,我是新来的,不知道该怎么办。我的示例应该更加丰富多彩,并非所有示例都采用[ext].ext的格式。我更

我需要使用文件重命名器中的正则表达式替换文件名中方括号中的多个不同术语。我可以单独做,但这非常耗时,有没有办法从列表中搜索和替换

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

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

编辑:对不起,我是新来的,不知道该怎么办。我的示例应该更加丰富多彩,并非所有示例都采用[ext].ext的格式。我更想寻找一种方法来匹配列表中的术语,并将其替换为“无”,以便删除该术语,例如:

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

替换:


但这当然行不通。有办法做到这一点吗?谢谢。

您可以通过使用以下正则表达式来实现这一点:

\s?\[(txt|pdf|doc|V3\.0)\]\s?
并保持替换字符串为空。可以在括号内添加任意数量的字符串,并用|管道字符分隔每个字符串。记住要避开像这样的特殊角色。用\

e、 g:V3\.0


.

您可以使用捕获组和反向引用来匹配以下内容:

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

这将匹配方括号内的一个单词,后跟一个点和该单词,并将其全部替换为后跟该单词的点。

您的预期输出是什么?是否可以从正则表达式中的列表中查找并替换?是的。不可能这个词本身就说我是可能的!这可能只需要一些巧妙的反向引用就可以完成。我建议将[^]]*更改为[^]]+。太好了!这是一种适当的方法。顺便说一句,这个问题有点小。这非常适合上面的例子,谢谢,但它们只是我需要删除的类型的一个例子,不是所有的都是[ext].ext格式。我更想寻找一种方法来匹配列表中的任何术语,并将其替换为零。@Zarnia:我根据您更新的问题更新了链接上的答案和示例。@Zarnia很乐意提供帮助。确保您将答案标记为正确,以便任何有类似问题的人看到此问题时也可以使用它: