Toon posts:

[js] Regexp probleem.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb met google gezocht, maar ik weet niet echt waar ik op moet zoeken. In regexp tutorials kon ik het antwoord ook niet vinden.
code:
1
<FONT color="red">Dit is een <FONT>saaie</FONT> test.</FONT>

Met een regexp zou ik dit stuk willen matchen:
code:
1
<FONT>saaie</FONT>


Tussen die twee FONT-tags staat altijd wat anders, daarom moet het dus met een regexp. Ik heb onderstaande code, maar die werkt (tuurlijk) niet, omdat deze de laatste </FONT> matcht.
code:
1
/<FONT>.*<\/FONT>/     =>    <FONT>saaie</FONT> test.</FONT>


In .* mag dus niet </FONT> voorkomen. Maar ik zou niet weten hoe ik de regexp dan moet schrijven, iemand enig idee :)?

Verwijderd

misschien die g achter die laatste slash weghalen?

Verwijderd

Topicstarter
Nee, dat maakt niks uit, want g zorgt ervoor dat hij het hele stuk meer dan 1 keer match in een string. Maar in dit geval komt het maar 1 keer voor :) .

Ik zie en snap dat mijn code fout (niet compleet) is, maar zou niet weten hoe het wél moet ;(.

Verwijderd

Als het maar 1 keer voorkomt heb je toch ook geen tweede sluittag?!

Verwijderd

Topicstarter
Nee, want de regexp begint met <FONT> en dat komt maar 1 keer voor, want bij die andere FONT-tag staat een color attribuut. Dus aan die g ligt het zowiezo niet.
edit:
Ik heb die g maar ff weg gehaalt, zodat we daar niet meer over kunnen struikelen :7

Verwijderd

owww, zo bedoel je, je kan iig wel aangeven dat er geen < in mag voorkomen maar dat lijkt me vrij omslachtig, dan krijg je zoiets:

/<FONT>[^<]*<\/FONT>/

maar het moet natuurlijk ook anders kunnen... damn, net terug van 5 weken vakantie, pff....

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

zellufs: /<FONT>[^<]*<\/FONT>/
hmm, dus <font>blaat <img /> blaat</font>moet niet matchen :?

Probeer 'm non-greedy te maken:
code:
1
2
3
/<FONT>.*?<\/FONT>/
         ^
die dus

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Wow, het werkt! Bedankt _/-\o_ !

Maar ik begrijp eigenlijk niet waarom het werkt. Dat vraagteken betekent toch dat je niet zeker weet of het karakter wat er voor staat voorkomt? Of heeft het vraagteken in dit geval een andere betekenis omdat hij achter een sterretje staat? :?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

In dit geval reverse je de greediness van de * operator. Default zijn ze greedy, nu met een ? erachter non-greedy.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

dat non greedy werkt overigens niet in de oudere browsers (v4 en mac volgens mij).. beperkingetje van de oudere js RegExp object..

Verwijderd

Topicstarter
Veel dank! :*) En ik begrijp het nu helemaal, nadat ik het woordenboek had geraadpleegd ;) greedy=gulzigaard
Pagina: 1