Avatar billede jakobdo Ekspert
03. september 2008 - 21:45 Der er 5 kommentarer og
1 løsning

Sidste match og ikke første

Hvis jeg f.eks. har følgende streng:

</div>tekst1</div>tekst2</td>

Og bruger denne regexp:
</div>(.*?)</td>
Så matcher den:
tekst1</div>tekst2

Jeg ønsker dog den skal matche fra sidste </div> til </td>
Hvordan gør jeg det ?

Jeg forestiller mig noget ala:

</div>(så længe jeg ikke støder på </div>)</td>
Men hvordan gør jeg det ?

[^</div>] tager jo </div> som tegn og ikke strengen. :o(
Avatar billede coderdk Praktikant
03. september 2008 - 23:02 #1
Hvis der ikke må være HTML i kan du bruge </div>([^<]+)</td>
Avatar billede coderdk Praktikant
03. september 2008 - 23:05 #2
Ellers prøv: </div>(?:(?!</div>).)*</td>
Avatar billede jakobdo Ekspert
04. september 2008 - 08:03 #3
Det er tæt på.
Men hvis jeg f.eks. laver som: </div>(?:(?!</div>).)*</td>
Så får jeg også </div> og </td> med , matches.
Jeg vil gerne have en group, som indeholder tekst2.
Kan du også forklare mig lidt om ?! lookahead eller lookbehind ??
Hvad er det præcist den gør ?
Avatar billede coderdk Praktikant
04. september 2008 - 11:42 #4
?: angiver et komplekst udtryk
?! er negativ look-ahead
?= er positiv look-ahead
?<= er positiv look-behind
?<! er negativ look-behind

Der skal bare laves en gruppe mere:

</div>((?:(?!</div>).)*)</td>
Avatar billede jakobdo Ekspert
04. september 2008 - 11:45 #5
Som jeg har forstået, så betyder (?:NOGET) at den ikke lavet capture på den gruppe.
Men takker for din forklaring.
Avatar billede coderdk Praktikant
04. september 2008 - 11:50 #6
Ja, det har du selvfølgelig ret i - jeg plejer bare at bruge den til komplekse udtryk, hvor der er MANGE () der ikke skal fanges - my bad :)
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