Avatar billede moonseer Nybegynder
19. januar 2003 - 23:08 Der er 2 kommentarer og
1 løsning

Hjælp til regular expression

Jeg er ret ny i regular expressions. Jeg har lavet nedenstående:

([0-9]{1,3}T[0-9]{1,4})((\+|-)([0-9]{1,5}|\1))*

den skulle gerne matche f.eks:

1T6 eller 1T6+4 eller 1T6+1T10+5 eller 1T2+1T4+1T5+4 ....

Det ser ud til at virke, men jeg tænker på om der er nogen der har en bedre eller smartere måde at lave den på.

jeg bruger boost regex++ library 1.29.0
Avatar billede _darkstar_ Nybegynder
19. januar 2003 - 23:36 #1
Jeg syne sikke at den ser helt korrekt ud. Den matcher ikke hele strengen og kan ikke fange f. eks. 1T2+1T4+1T5+4 som du giver som eksempel. Det eneste den matcher er starten, nemlig "1T2+1" - ikke mere.

Du mangler blot at hælde en asterisk mere på og kræve at den matcher hele strengen. Desuden er der noget med det sidste led. Jeg går ud fra at der ikke må stå 3T1+1+1+1+1+1+2+1+4+5+232233. Så får man noget i stil med:

^[0-9]{1,3}T[0-9]{1,4}((+|-)([0-9]{1,3}T[0-9]{1,4}))*((+|-)([0-9]{1,4}))?$

Den sikrer at der altid står et led med T først, muligvis efterfulgt af nogle flere T-led, muligvis efterfulgt af ét tal.

Der er muligvis nogle småfejl. Dem er jeg for træt til at luge ud nu.
Avatar billede _darkstar_ Nybegynder
19. januar 2003 - 23:37 #2
"Du mangler blot at hælde en asterisk mere på" er noget værre sludder. Jeg tror astdigvæk at mit forslag er korrekt, men det er vist ved at være sengetid.
Avatar billede moonseer Nybegynder
20. januar 2003 - 00:01 #3
jeg kan ikke får den sidste del af dit forslag til at virke.
Jeg er vist for træt nu, så jeg kigger på det i morgen.
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