如果在正则表达式中? (仅当文件类型为 xxx 时才替换文件名中的内容)

IF in a Regex expresion? (replace something in file names ONLY if file type is xxx)

好吧,我知道一些正则表达式,但这在愚弄我...

我通常每个月都会管理数百个提交的文件,并且必须进行一些检查和替换,然后才能在我们的 Intranet 中再次使用它们...

我在 Windows 上通过一个文件重命名程序在本地进行此操作,该程序可以执行 pcre 但一次只能执行一行,因此所有内容都应该在同一个正则表达式中。

问题是我只想在文件类型为 xxx 时进行替换。

例如,仅当扩展名是 jpg|jpeg|jpe 时才替换下划线的所有空格

所以

this is a test.jpg => this_is_a_test.jpg

this is a another test.jpe => this_is_a_another_test.jpe

this is a test.docx => this is a test.docx

Jpg 是一个示例,我对每个扩展名进行了不同的替换,而不是对所有扩展名进行了不同的替换,因此在 .docx 中替换上述示例中的空格的内容将是错误的...

可以吗???

你说你在 Windows,但是你有 WSL(Bash for Linux)或类似的东西吗?如果是这样,这里有一个从 Linux 命令行执行此操作的快速方法:

rename 's/ /_/g;' *.jpg *.jpe

解释:rename 在指定文件的名称上运行给定的 Perl 脚本。

你需要找到spaces,然后向前看扩展名:

 (?=.*\.jp(?:g|e)$)

注意前导space。

在这里试试:https://regex101.com/r/ZgDv7S/1