Avatar billede shadowdance Nybegynder
19. oktober 2005 - 21:02 Der er 4 kommentarer og
1 løsning

RegExp tager ikke mindst mulige resultat

Hejsa,

jeg bruger regexp til at fortolke noget pseudokode til ren HTML. Når jeg skriver


    punkt 1
    punkt 2
    punkt 3

...oversættes det til en punktliste i HTML. Det virker fint, bare ikke hvis der er flere lister i samme dokument. Så producerer RegExp et enkelt match, hvor den første instans af
    efterfølges af al tekst frem til den sidste instans af
. Med andre ord ignoreres mellemliggende instanser af . Dette er lettere problematisk.

Mit pattern ser sådan ud: "\[list\](.+)\[/list\]"

Nu er udfordringen så at få den til at stoppe efter den første instans af , selvom der følger flere senere i dokumentet. Hvordan gør jeg det?
Avatar billede plx Nybegynder
19. oktober 2005 - 21:08 #1
Du kan gøre den ikke-grådig ved at sætte ? efter +

(.+?)
Avatar billede shadowdance Nybegynder
19. oktober 2005 - 21:13 #2
Jeg må ikke sætte ? ind i parantesen, da dette producerer fejlen Unexpected Quantifier. Hvor skal jeg placere tegnet?
Avatar billede chrisp Nybegynder
21. oktober 2005 - 15:48 #3
Et alternativ til at bruge en ikke grådig søgning kunne være

\[list\]([^[]+)\[/list\]

som dog betyder at der ikke må bruges [ inde i punkt listen...
Avatar billede shadowdance Nybegynder
19. juli 2006 - 13:46 #4
Chrisp > svar accepteret. Point?
Avatar billede chrisp Nybegynder
24. juli 2006 - 22:56 #5
Et lidt forsinket svar :-)
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