webForumDet fria alternativet

Fråga om RegExp

ASP

3 svar · 315 visningar · startad av Donatello

Medlem sedan jan. 2005108 inlägg
Frågan#1

Hej. Undrar om det finns någon smidig lösning på följande:

Jag vill att en sträng innehållande ex.vis.

"brödtext brödtext <länk 1>brödtext</länk> brödtext <länk 2>brödtext</länk>"

blir

"brödtext brödtext <a href=""/?w=1"">brödtext</a> brödtext <a href=""/?w=2"">brödtext</a>"

Att replacea </länk> till </a> är ju en piece of cake, men sen har jag kört fast lite. Jag har inte kommit längre än

Set RegExp = New regexp
RegExp.Global = True
RegExp.IgnoreCase = True
RegExp.Pattern = "<länk (/d)*>"

Finns det något sätt jag kan ändra "<länk " till "<a href=""/?w=" och ">" till """>" eller få ut enbart siffrorna och klistra in dem i det nya mönstret... eller nåt? *lite förvirrad* :)

Tacksam för svar

Medlem sedan dec. 20025 483 inlägg
#2
RegExp.pattern = "<länk([^>]*)>((?:.|\n|\r)*?)</länk>"
str = RegExp.replace(str, "<a href=""/?w=$1"">$2</a>")
Medlem sedan jan. 2005108 inlägg
#3

Tack. :)

Har läst på så mycket att jag börjar känna mig illamående nu... :OO

Körde fast på en ny grej, som jag undrar om någon skulle vilja hjälpa mig med.

Om jag ex.vis. har strängen

brödtext brödtext vbcrlf vbcrlf<bild namn=maskin1.jpg position=left bredd=192 höjd=569> brödtext brödtext

Och vill få den till

brödtext brödtext vbcrlf vbcrlf<img src=""/thumbs.asp?filename=maskin1.jpg&width=192&height=569"" align=""left""> brödtext brödtext

så har jag fingrat ihop följande

str = "brödtext brödtext vbcrlf vbcrlf<bild namn=maskin1.jpg position=left bredd=192 höjd=569> brödtext brödtext"
RegExp.Pattern="<bild[\s]*|namn=[^\s]*|bredd=[^\s]*|höjd=[^\s]*|position=[^\s]*|>"
RegExp.Replace(str, "<img src=""/thumbs.asp?filename=$2&width=$3&height=$4"" align=""$5"">"

Problemet med mitt pattern är ju att den hittar träffar på allt, individuellt. T.ex blir bredd=192 en egen träff och får sig en egen <img src... osv. Men... Jag vet inte hur jag ska göra! x(
Går det att hitta träffar i träffen... eller hur man ska säga? Kruxet är att det inte är säkert att bredd, höjd osv står i "rätt" ordning, eller att alla överhuvudtaget är med.
Är tacksam för all hjälp jag kan få...

Det är inte lätt när det är svårt.... :OO

Medlem sedan dec. 20025 483 inlägg
#4

Det blir nog svårt att genomföra om du inte vet var 'position', 'höjd' o.s.v. ligger. Detta eftersom du måste mappa de svenska namnen mot engelska. Jag bifogar ett JS-exempel som någon gärna får översätta till VBScript.

<script>
function f(){
 var arr = [
   ['position', 'align'],
   ['namn', 'src'],
   ['bredd', 'width'],
   ['höjd', 'height']
 ],
 ta_val = document.forms[0].elements[0].value;

 for (var i = 0; i < arr.length; ++i){
   ta_val = ta_val.replace(new RegExp("<(bild.*?)"+ arr[i][0] +"=([^\\s>]+)([^>]*)>","gi"), '<$1'+ arr[i][1] +'="$2"$3>');
 }

 document.forms[0].elements[2].value = ta_val.replace(/<bild/gi, "<img");
}
</script>

<form>
 <textarea cols="90" rows="20">brödtext brödtext vbcrlf vbcrlf<bild namn=maskin1.jpg position=left bredd=192 höjd=569> brödtext brödtext</textarea>
 <br>
 <input type="button" onclick="f()" value="click">
 <br>
 <textarea cols="90" rows="20"></textarea>
</form>
260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)