PCRE在扩展名上过滤文件

时间:2009-12-31 09:14:26

标签: php regex perl

我需要一个PCRE(Perl兼容正则表达式),它将匹配文件列表中的所有 -images(jpg,png,tiff)。所以我需要一些代替XXX

# Perl
while(<>){
chomp;
if(/XXX/){
// non-image
}
}

// PHP
foreach($files as $file){    
if(preg_match('/XXX/',$file){
// non-image
}
}

我知道可以使用如下的否定来完成,但我一直在寻找一些不使用否定的东西。

if(!/\.jpg$/)
{
}

另外,如果可能,请提供有关正则表达式如何工作的简要说明

提前致谢

1 个答案:

答案 0 :(得分:6)

以下是使用负面后视(?<! ... )的解决方案:

/(?<!\.png|\.jpg|\.tiff)$/

它匹配字符串的结尾,但前提是不是,前面是.png,.jpg或.tiff。

这是一个只使用固定宽度外观的Perl友好版本:

/(?<!\.png)(?<!\.jpg)(?<!\.tiff)$/