我有示例路径:
/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有什么问题?
答案 0 :(得分:0)
表达式
(.*\.(?!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 "$1\n";}
结果:
/var/ftp/video/Portuguese/Portuguese-Daniel/Animação Inicial/CLIPS/Torsten.Sturmwellen.Veith/Wellen_00653.tif
答案 1 :(得分:0)
找到解决方案:
^(?!\/var\/ftp\/video\/English)(.*\.(?!(doc.?|ppt.?|jpg|tif.?|pdf|DS_Store)$)([^.]+$))