我有一个示例路径:
/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)$)([^.]+$))