Avatar billede elk Nybegynder
22. maj 2002 - 13:57 Der er 10 kommentarer og
1 løsning

Finde filer der opfylder bestemt syntax

Sidder og har et directory med en masse filer i...jeg skal have spottet dem der opfylder en bestemt syntax

syntax : filnavn_ciffe.filtype
ex skal den finde
fiat_001.txt
men IKKE
fiat001.txt

hvad jeg har brug for er altså et sødt lille regulært udtryk der kan klare dette ;))
Avatar billede kjelkvist Nybegynder
22. maj 2002 - 14:16 #1
Du skal anvende wildcards:
eks:
dir *_???.*
Denne vil vise alle de filer af alle filtyper, der slutter med _ og 0-3 karaktere altså både
XX_.doc
XX_001.txt
YY_ac.exe

dette skal aktiveres fra en DOS-prompt
Avatar billede elk Nybegynder
22. maj 2002 - 14:19 #2
menu det er fra et php script det skal bruges ;)
Avatar billede elk Nybegynder
22. maj 2002 - 14:19 #3
menu = men
Avatar billede elk Nybegynder
22. maj 2002 - 14:56 #4
efter at have roddet lidt har jeg fået lavet mig et der funker ;))

"/(.*)_\d+\.(.*)/i"

men er der nogen der lige kan gemmenskue om der findes et bedre sååå
Avatar billede sone Nybegynder
22. maj 2002 - 15:07 #5
Noget a'la:

$d = dir("content/");
while ($entry = $d->read())
{
    if (eregi ("[^_]*_[0-9]*\..*", $entry, $regs))
    {
        echo "$entry<br>";
    }
//    else
//        if (strlen($entry) > 3) echo "$entry - unknown file name format/type<BR>";
}
$d->close();
Avatar billede jespernaur Nybegynder
22. maj 2002 - 17:40 #6
Nu ved jeg ikke hvad kravene er, men:
1) Er det et krav at der skal der stå noget foran underscore?
2) Er det et krav at der skal der være mindst 1 ciffer?
3) Er det et krav at der skal der være en ikke-tom filtype?
4) Må der være andre underscore's end den lige før cifrene?

elk's forslag tillader fx navnet:

  _0.

sone's forslag tillader fx navnet:

  _.

men derimod ikke:

  a_b_001.txt

Lad os få præciseret kravene lidt mere.

Mvh
Jesper Naur
Avatar billede elk Nybegynder
22. maj 2002 - 18:03 #7
1) der skal stå noget foran underscore
2) der skal være mindst et ciffer
3) der skal være en filtype
4) har ikke lige taget stilling til denne... men lad os antage at der kun må være den ene - men løsning til begge er da også interessante ;)))
Avatar billede jespernaur Nybegynder
22. maj 2002 - 19:01 #8
Første løsning omfatter:

a) begyndelsen af strengen, efterfulgt af
b) et positivt antal tegn, der ikke må være underscore, efterfulgt af
c) en underscore, efterfulgt af
d) et positivt antal cifre, efterfulgt af
e) et punktum, efterfulgt af
f) et positivt antal vilkårlige tegn, efterfulgt af
g) afslutningen af strengen

Den tillader altså ikke andre underscore's i filnavnet end den før cifret/cifrene
(der må dog gerne være underscore i filtypen).

"/^[^_]+_\d+\..+$/i"

Anden løsning omfatter:

a) begyndelsen af strengen, efterfulgt af
b) et positivt antal vilkårlige tegn (underscore tilladt), efterfulgt af
c) en underscore, efterfulgt af
d) et positivt antal cifre, efterfulgt af
e) et punktum, efterfulgt af
f) et positivt antal vilkårlige tegn, efterfulgt af
g) afslutningen af strengen

"/^.+_\d+\..+$/i"

Mvh
Jesper Naur
Avatar billede elk Nybegynder
22. maj 2002 - 19:29 #9
Har lige implementeret løsning 2 og det spiller....
Jesper får pointsne for den gennemførte løsning ;))
takker....
Avatar billede jespernaur Nybegynder
22. maj 2002 - 19:31 #10
Det er jo overflødigt at skrive /i, da det regulære udtryk slet ikke indeholder bogstaver, hverken store eller små! Med andre ord:

"/^[^_]+_\d+\..+$/"

eller

"/^.+_\d+\..+$/"
Avatar billede apacheserver Nybegynder
10. august 2002 - 16:05 #11
jespernaur >> Ved du noget om Apache ? http://www.eksperten.dk/spm/238556
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester