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

时间:2018-11-10 11:40:17

标签: regex pcre

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

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

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

问题在于,仅当文件类型为xxx时,我才想进行替换。

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

如此

  

这是一个test.jpg => this_is_a_test.jpg

     

这是另一个测试。jpe=> this_is_a_another_test.jpe

     

这是一个test.docx =>这是一个test.docx

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

有可能吗?

2 个答案:

答案 0 :(得分:2)

您需要找到空格,然后向前看才能看到扩展名:

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

注意前导空格。

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

答案 1 :(得分:0)

您说过您在Windows上,但是您有WSL(Linux的Bash)或类似的产品吗?如果是这样,这是从Linux命令行执行此操作的快速方法:

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

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