regexp -使用目录和文件扩展名黑名单过滤特定的文件路径



我有一个示例路径:

/var/ftp/video/Portuguese/Portuguese-Daniel/Animação Inicial/CLIPS/Torsten.Sturmwellen.Veith/Wellen_00653.tif

我需要黑名单/var/ftp/video/English目录以及一些文件扩展名(如doc/docx/ppt/pptx/tif/tiff/pdf/jpg/DS_Store)

我使用的RegExp是:

^(?!/var/ftp/video/English)(.*.(?!doc.*$|ppt.*$|jpg.*$|tif.*$|pdf.*$|DS_Store.*$)[^.]+)

但是它不起作用,因为它匹配这个示例路径(但没有扩展名)。为了做我的测试,我使用http://regex101.com/网站。

我的RegExp有什么问题?

表达式

(.*.(?!doc.*$|ppt.*$|jpg.*$|tif.*$|pdf.*$|DS_Store.*$)[^.]+)

显式地排除扩展名。这就是为什么你的表达式不起作用。

的表达式
(.*.(?!doc.*$|ppt.*$|jpg.*$|tif.*$|pdf.*$|DS_Store.*$).*)

包含扩展名

用这个perl代码测试:

$a="/var/ftp/video/Portuguese/Portuguese-Daniel/Animação Inicial/CLIPS/Torsten.Sturmwellen.Veith/Wellen_00653.tif";
if ($a=~/^(?!/var/ftp/video/English)(.*.(?!doc.*$|ppt.*$|jpg.*$|tif.*$|pdf.*$|DS_Store.*$).*+)/) {
print "$1n";}
结果:

/var/ftp/video/Portuguese/Portuguese-Daniel/Animação Inicial/CLIPS/Torsten.Sturmwellen.Veith/Wellen_00653.tif 

找到解决方案:

^(?!/var/ftp/video/English)(.*.(?!(doc.?|ppt.?|jpg|tif.?|pdf|DS_Store)$)([^.]+$))

最新更新