Toon posts:

[regex] exclude tags

Pagina: 1
Acties:

Verwijderd

Topicstarter
Onderstaande functie gebruik ik om zoektermen te highlighten:
code:
1
2
3
4
5
6
7
8
9
Function Highlight(vSearch, vFind) 
 Dim RegEx 
 Set RegEx = New RegExp 
 RegEx.Pattern = "\b(" & vFind & ")\b" 
 RegEx.IgnoreCase = True 
 RegEx.Global = True 
 Highlight = RegEx.Replace(vSearch,"<span class='zoekres'>"&vFind&"</span>") 
 Set RegEx = Nothing 
End Function


De inhoud komt uit een cms systeem waarin ook tags staan als [img]$12,linktekst[/img] en [pdf]$12,linktekst[/pdf] .

Het probleem wat zich nu voordoet is dat als de zoekterm in bijvoorbeeld de bestandsnaam van een img of pdf voorkomt ook de "" <span class='zoekres'>"&vFind&"</span> conversie optreed waardoor de bestandsnaam niet meer geldig is en een fout op de link opleverd.

Hoe kan ik er voor zorgen dat de zoekterm binnen deze tags genegeerd wordt door de functie?

[ Voor 10% gewijzigd door Verwijderd op 10-05-2006 11:02 . Reden: [wil iemand de titel aanpassen in regex aub] ]


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Vind de regex plaats op de ruwe data, of als de [...] tags al gereplaced zijn? Als het het eerste is heb je misschien wat aan een eerdere post van mij binnen [rml][ PHP] Begrippen vervangen[/rml] :) .

DM!


Verwijderd

Topicstarter
Bedankt JHS,
Ik heb er een tijd naar moeten kijken maar de code die je gebruikt in je link hierboven:
code:
1
/(?:(?(?<\\[(?:url|img|...)[^\]]*])\\[/(?:url|img|...)\]|.*))(tekst)/Usi

maar deze werkt niet. Ik blijf de melding Unknown regex token. use backslashes to excape metacharacters.
Ik heb er dit van gemaakt:
code:
1
/(?:<\\[(?:url|img|...)[^\]]*])\\[/(?:url|img|...)\]|.*(tekst)/Usi

Maar ik overzie niet helemaal de consequenties. Kun je mij uitleggen wat het verschil is?

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Je hebt de conditie er nu uitgesloopt. Het doet nu volgens mij een non-matching regex op het voorkomen van een < gevolgd door een [, etc. tot de closing ) nabij *] :) . Iniedergeval werkt de regex die ik gaf netjes binnen PHP (PCRE), maar ik weet natuurlijk niet hoe dat binnen andere talen zit.

DM!


Verwijderd

Topicstarter
Mmm iets teveel gesloopt volgens mij. Maar als jij jouw code in Powergrep zet, geeft hij dan aan dat de syntax correct is? Zijn regex niet universeel (qua syntax?)

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Powergrep :? . Over het algemeen lijkt het me dat de syntax redelijk, maar op de PCRE pagina staat wel een lijstje uitzonderingen. Ik kan me voorstellen dat een andere parser die dus ook heeft.

DM!


Verwijderd

Topicstarter
Powergrep is een soort searchtool waarin je met regular expressions kan zoeken..
Als ik in jouw code de tweede en derde vraageteken voorzie van een dubbele punt is (volgens powergrep) de sysntax ok..ik ga je link eens doorlezen..
thanks voor de reply's in ieder geval..
Pagina: 1