wyrażenia regularne - ustawienie filtra na 'NIE'

Odpowiedz Nowy wątek
2006-09-15 10:54
snw
0

witam.

mam problem z wyrażeniami regularnymi - za ich pomocą filtruję wyniki przeszukiwania folderów.
i tak, np chcąc znaleźć same pliki .mp3, użyję filtra
.
.mp3$
mp3 i ogg:
.*.(mp3|ogg)$

natomiast pojęcia nie mam, jak znaleźć wszystki pliki OPRÓCZ mp3

jedyne co wykombinowałem to
.*.[m][p][^3]$

ale to powoduje odrzucenie nie tylko mp3, ale i wszystkich plików z rozszerzeniem zaczynającm się na 'm' i 'mp' (np mpc, mpg etc)

help me :)


Pozostało 580 znaków

2006-09-15 12:00
0

a tak: .*.[^(mp3)]$ ?

Pozostało 580 znaków

2006-09-15 13:44
0

@SebaZ:
To powoduje że znakiem po kropce nie może myć (, m, p, 3, )

Z tego co wiem regexpy nie mają możliwości zaprzeczenia, można zrobić odwrotnie:
Sprawdzić czy plik ma rozszerzenie .mp3 (lub inne) i jak ma to odrzucić

Pozostało 580 znaków

2006-09-15 14:21
abc
0

Szkoda, ze nie napisales czy chodzi o .php skrypt czy tez o komendy w powloce.
Bo np. moglbys to zrobic tak: (kozysta z wyrazenia regularnego :P)

ls | awk '{ if ( $1 !~ "mp3$" ) {print $1} }'

co do preg_match to chetnie bym sie sam dowiedzial :)


Pozostało 580 znaków

2006-09-15 14:39
0

Opracowałem takie wyrażenie, działa ale tylko jak rozszerzenie ma 3 znaki

^.*\.([^m][^p][^3]|m[^p][^3]|mp[^3]|[^m]p3|[^m][^p]3)$

Pozostało 580 znaków

2006-09-15 14:55
snw
0

chodzi o Delphi i komponent TPerlRegEx...
@prgtw: jak tylko dla 3 to odpada, no nie ? no...

Z tego co wiem regexpy nie mają możliwości zaprzeczenia, można zrobić odwrotnie:
Sprawdzić czy plik ma rozszerzenie .mp3 (lub inne) i jak ma to odrzucić

i tak zrobię, nazwę to wzniośle trybem positive/negative swith :D

//dzięki za utwierdzenie w niemożliwości :)


Pozostało 580 znaków

2006-09-16 00:43
0

Wymodziłem coś takiego (za 'mp3' można podstawić dowolne rozszerzenie):

^(?:(?!.*\.mp3$).)*$

Nowe pomysły są inną kombinacją starych elementów. Nie ma nowych elementów. Są tylko nowe kombinacje.

Pozostało 580 znaków

2006-09-16 09:19
snw
0

Bula faktycznie działa !!! dodam to sobie jako jeden z defaultowych filtrów, ale myślę że z przełącznika nie ma co rezygnować - na wypadek bardziej skomplikowanych filtrów 'negatywnych' wydaje się najlogiczniejszym rozwiązaniem i najprostszym dla użytkownika końcowego: o wiele łatwiej napisać 'pozytywny', poza tym jest dużo krótszy :)


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0