|
|||||||||||||||||||||||||||
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
|
||||||||||||||
|
||||||||||||||