SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] Tjek for strengformat



P <sslug@sslug> writes:

> Christian Hemmingsen <sslug@sslug> writes:
> 
> > jeg er ikke helt sikker på hvad der menes, om "1ab2c3" er accepteret,
> > eller om det skal være "321abc" eller "lmn654" agtigt......
> 
> 1ab2c3 overholder da kravsspecifikationen om at det skal indeholde 3
> tal og tre bogstaver.

Jeg var som sagt ikke sikker på om han mente det ene eller det
andet...
Så jeg retter mit forslag til det ene af to eksempler

/^(\w\d|\d\w){3}$/
 
> > \w kan selvfølgelig skiftes ud med [a-zøæå], hvilket man nok skal for
> > at arbejde uden om den sørgelige forfatning "collating", mht. locale, i
> > perl regex's er i   *suk*
> 
> Det er de færreste regulære udtryk der er afhængig af
> sorteringen. LC_COLLATE skulle derfor være ligemeget. LC_CTYPE
> derimod...

Du har ret mht. "\w", det er LC_CTYPE der bestemmer her, det er det i
hvert fald mht. f.eks. POSIX' "[:alpha:]"....

Men når vi snakker om "character ranges" er det LC_COLLATE der afgør
om et tegn er i den "range".
For sjovt nok, så virker [a-å] i POSIX regex som man som dansker ville
forvente, så snart LC_COLLATE bliver sat til f.eks. "da_DK". LC_CTYPE
gør derimod ingen forskel her. Jeg ved ikke om det er mig der gør
noget forkert, men jeg kan ikke få min perl installation til at opføre
sig nogenlunde fornuftigt mht. locale. Det er f.eks. ikke lykkedes mig
at matche et "å" med "\w" (?!), og "[a-å]" kan jeg heller ikke få til at
virke. Indtil nogen giver mig en løsning på de problemer, vil jeg
betragte perl som defekt på det område.

-- 
Christian Hemmingsen


 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:54
Denne side vedligeholdes af MHonArc .