PCRE uzantısı dosyaları filtrelemek için

1 Cevap php

Ben dosyaların bir listeden tüm non görüntüleri (jpg, png, tiff) maç olacak bir PCRE'yi (Perl uyumlu düzenli ifade) gerekir. Yani bir şeye ihtiyacım var go in place of XXX

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

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

Ben aşağıdaki gibi bir inkarını kullanılarak yapılabilir biliyorum, ama ben inkarını kullanmadan bir şey arıyordu.

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

Ayrıca, eğer mümkünse nasıl Regex işin kısa bir açıklama lütfen

şimdiden teşekkürler

1 Cevap

İşte Negatif Geriye İlerleme kullanarak bir çözüm (?<! ... ):

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

Bu dizenin sonuyla da eşleşir, ancak isn't. Png,. Jpg veya. Tiff öncesinde sadece.

Burada sadece sabit genişlik behinds bakmak kullanarak bir Perl dostu sürüm bulunuyor:

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