<-= KG =-> skrev:
>> regEx.IgnoreCase = True
Linjen her sørger for at html-koder fanges uanset versalering
(altså at både <b> og <B> vil virke).
>> regEx.Pattern = "<([/]*[bi])>"
Det her er det vigtigste i funktionen. Starten og slutningen er
bare normal tekst - hhv. < og >. Det er skrevet sådan fordi
Server.HTMLencode (der skal køres før funktionen) ændrer < til <
og > til >.
Parentesen bruges til at oprette en reference til det der er inde i
den. Det bruges når man laver erstatningen. Inde i parentesen står
følgende: [/]*[bi]. Klammerne angiver tegngrupper, hvor der bare
skal bruges ét tegn fra klammen. Stjernen (*) betyder 0 eller flere
af det foregående - altså her tegnet "/". Det er derfor at der både
matches start og slutkoder.
>> strOut = regEx.replace(tekst, "<$1>")
Replace-kommandoen erstatter alle matches i første parameter
(tekst) med den anden parameter ("<$1>"). $1 henviser til
parentesen i det regulære udtryk - det er bl.a. derfor at regulære
udtryk kan bruges til meget mere end en normal søg og erstat-
kommando.
> Det fungerer fint, men kan ikke påstå jeg kan gennemskue
> hvordan det pattern både kan spotte åbnings- og
> afslutningstags.
Som nævnt ovenfor er det stjernen der gør tricket. Man kunne
faktisk også have brugt spørgsmålstegn - som betyder 0 eller 1 af
det foregående.
> Hvor defineres det for resten at det _ikke_
> skal være netop <B> og <I> der bliver replaced men alt andet,
Det fungerer omvendt. Først "tekstliggøres" alle html-koder med
Server.HTMLencode (< og > erstattes med < og >). Bagefter
ændres < og > tilbage til < og >, men kun for de tilladte
koder.
Du kan finde mange flere oplysninger om regulære udtryk her:
<
http://www.regular-expressions.info/>
Man kan også finde en dansk introduktion til emnet som pdf:
<
http://www.emu.dk/gym/fag/dl/inspiration/noter/regexp.pdf>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html