09. oktober 2002 - 07:51Der er
16 kommentarer og 1 løsning
regex hjælp søges
Hej RegEx'ere.
Jeg har i et script udtrykket:
s-^(.*[^\\])$-$1\\-o; # ensure path ends with a backslash
Men som jeg læser det, så står der:
find intet eller noget tekst i starten af strengen, dernæst et backslash og konkatener yderligere et backslash på enden af denne streng. Mit gæt ville have været at man kun skulle konkatenere et backslash, hvis der ikke allerede var et!? Hvad står der i virkeligheden i udtrykket?
Eftersom der står [^\\] er der tale om en negeret tegnklasse, altså alt bortset fra backslash. Der står altså i virkeligheden: Find intet eller noget tekst, dernæst en ikke-backslash, og konkatener en backslash på den fundne streng. Den finder altså alt til og med sidste forekomst af en ikke-backslash
Aaaahhhh! Jeg læste det som at \\skulle optræde i starten af indholdet af den karakterklasse den er en del af! Men det skal den jo implicit, ^ betyder vel altid i starten af strengen! Med mindre at der optræder \n og den slags specialtilfælde :). Takker! M.v.h. Svinth
Så'n en * er grådig. Så .* vil tage den sidste \ med. Altså fordi den er optional: \\? Ikke grådig .*? tager kun så meget der er nødvendigt. Øh - sådan ca...
Ok, på den måde. Som udgangspunkt søger disse udtryk netop at finde så meget som muligt... Vil sige at .*? er et fast udtryk, eller kan ? også bruges til eksempelvis:
.+?
M.v.h. Svante
PS: Jeg har også lige fundet *? i et andet udtryk:
Ok - det er vist rigtigt nok - det kan ikke gøres nemmere.
Synes godt om
Ny brugerNybegynder
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.