Avatar billede kimlarsen1978 Nybegynder
15. juli 2007 - 13:03 Der er 23 kommentarer og
1 løsning

RegExp tal efterfylgt af , eller ingenting

Hejsa
Jeg har en kommasepereret streng 12,0,59,5

Det jeg gerne vil lave, er et tjek på om fx 1 er med som selvstændig tal. I dette tilfælde er det altså false da 1 ikke er med som selvstændig tal. Det er altså ikke nok at det indgår i 12.

//eksempel hvor der tjekkes på om 1 er med som selvstændig tal
[0-9,]*1[0-9,]*

Det virker ikke, den giver true da den åbenbart kun tjekker om 1 indgår i strengen.

Er problemet til at forstå og hvordan løses det?
Avatar billede nielle Nybegynder
15. juli 2007 - 16:02 #1
Prøv med:

(^|,)1(,|$)

Alternativt kan du jo splitte strengen ved kommerne og løbe delstrengene igennem for at se om en af dem er "1".
Avatar billede kimlarsen1978 Nybegynder
15. juli 2007 - 16:33 #2
Hvad betyder | ?
Avatar billede nielle Nybegynder
15. juli 2007 - 17:06 #3
Det betyder ELLER.

(^|,) betyder derfor "i starten af strengen" (^) ELLER "et komma".
Avatar billede kimlarsen1978 Nybegynder
15. juli 2007 - 17:12 #4
Det virker :o)
Avatar billede erikjacobsen Ekspert
15. juli 2007 - 17:17 #5
Jeg ville foretrække

  \b1\b

hvor \b er "word-boundary" - check fx PHP:  http://dk.php.net/manual/en/reference.pcre.pattern.syntax.php
Avatar billede nielle Nybegynder
15. juli 2007 - 17:24 #6
erikjacobsen> Det var også mit første bud, men den virker bare ikke korrekt i sammenhængen.

Godt nok har jeg ikke direkte afprøvet den i PHP, men i C#. Så muligvis kan jeg tage fejl.
Avatar billede erikjacobsen Ekspert
15. juli 2007 - 17:36 #7
Det burde virke i C#.
Avatar billede nielle Nybegynder
15. juli 2007 - 17:40 #8
Det gør den nu ikke:

static void Main(string[] args)
{
    List<string> inputs = new List<string>();

    inputs.Add("1,2,33");
    inputs.Add("2,1,33");
    inputs.Add("2,33,1");

    inputs.Add("2,11,33");
    inputs.Add("1");
    inputs.Add("11");
    inputs.Add("1,1");
    inputs.Add("12,0,59,5");

    foreach (string input in inputs)
    {
        Console.WriteLine("{0} - {1}", Test(input), input);
    }
}

static bool Test(string input)
{
    Regex re = new Regex("\b1\b");
    return re.IsMatch(input);
}
Avatar billede erikjacobsen Ekspert
15. juli 2007 - 17:45 #9
Nej, selvfølgelig ikke. Et lille vink: @
Avatar billede nielle Nybegynder
15. juli 2007 - 17:47 #10
Doh :^)
Avatar billede erikjacobsen Ekspert
15. juli 2007 - 17:50 #11
Hmm, men spørgeren bruger vist ASP/VBScript
Avatar billede erikjacobsen Ekspert
15. juli 2007 - 17:52 #12
...men det burde også være \b  :)
Avatar billede kimlarsen1978 Nybegynder
15. juli 2007 - 20:01 #13
Det er godt med jer :o)
Kan jeg få et svar?

Mange tak for jeres hjælp!

:o)
Avatar billede nielle Nybegynder
15. juli 2007 - 20:03 #14
Står over på denne jer - erikjacobsen's er den mest elegante løsning på problemet. :^)
Avatar billede nielle Nybegynder
15. juli 2007 - 20:05 #15
Iøvrigt, hvis du ikke har gennemskuet hvorfor din oprindelige [0-9,]*1[0-9,]*
ikke virker, så skyldes det simpelhen at del-ledet 1[0-9,]* matcher:

1
12
13,
1,

og en masse mere. Du får altså en masse falske hits. :^)
Avatar billede kimlarsen1978 Nybegynder
15. juli 2007 - 20:09 #16
De virker fint begge 2 :0)

Inden jeg oprettede spørgsmålet havde jeg forsøgt med \D1\D men det virkede ikke, hvorfor kan jeg ikke lige gennemskue...
Avatar billede kimlarsen1978 Nybegynder
15. juli 2007 - 20:11 #17
By the way: det er ASP/VBScript

:o)
Avatar billede nielle Nybegynder
15. juli 2007 - 20:13 #18
\D matcher ikke starten af en streng - det gør \b derimod.
Avatar billede kimlarsen1978 Nybegynder
15. juli 2007 - 20:19 #19
:o)
Avatar billede erikjacobsen Ekspert
15. juli 2007 - 20:25 #20
Ingen point til mig, tak tak.
Avatar billede kimlarsen1978 Nybegynder
15. juli 2007 - 20:47 #21
Hmmm...
--> nielle?
Avatar billede nielle Nybegynder
15. juli 2007 - 20:49 #22
Stadigvæk, nej tak. Smid du bare selv et svar og tag dine point tilbage. :^)
Avatar billede nielle Nybegynder
23. august 2007 - 08:29 #23
Husk at lukke dette spørgsmål. :^)
Avatar billede kimlarsen1978 Nybegynder
23. august 2007 - 18:22 #24
Lukker
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