webForumDet fria alternativet

XMLHTTP + regexp, regexp fungerar inte som jag vill

ASP

7 svar · 289 visningar · startad av Jacob

Medlem sedan dec. 2000503 inlägg
Frågan#1

Jag har försökt söka men har inte hittat något svar.

Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", "http://www.mobil.se/nyheter/nyheter.asp?sid=1", false

objHTTP.Send
strHTML=objHTTP.responseText
Set objHTTP = Nothing

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "Huvudnyhet*Huvudnyhet SLUT"
Set hittade = objRegExp.Execute(strHTML)

For each item in hittade
With response
	.write("Mobil: ")
	.write item.value
End with

Jag får inga felmess, sidan skiver itne ut något. Och jag vet att sidan innehåller:
<!--Huvudnyhet-->en massa nyhter<!--Huvudnyhet Slut-->

Som du förstår så vill jag plocka ut nyhterna.

Medlem sedan dec. 2000503 inlägg
#2

Jag kan inte regex, men jagh har komit på att det är är ute efter är en patten som plockar ut allt mellan <!--Huvudnyhet--> och <!--Huvudnyhet Slut-->

Medlem sedan dec. 2000503 inlägg
#3

Är det här omöjligt? Det tror jag inte.

Någon måste veta

Medlem sedan juni 200032 967 inlägg
#4

Jag kan inte heller RegExp, därför ser jag en annan lösning. ;)

Med lite strängfunktioner och en trött @ndershjärna borde detta fjunka:

strHTML = right (strHTML, len(strHTML)-instr(strHTML, "<!--Huvudnyhet-->")-16)
strHTML = left (strHTML, instr(strHTML, "<!--Huvudnyhet Slut-->")-1)

Mvh,

Medlem sedan dec. 200012 464 inlägg
#5

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "(Huvudnyhet)(.*?)(Huvudnyhet SLUT)"
Set hittade = objRegExp.Execute(strHTML)

For each match in hittade
   With response
    	.write("Mobil: ")
	.write match.submatches(1) & "<br>"
   End with
next
Medlem sedan dec. 2000503 inlägg
#6

Den fungerade inte LarsG, det skrivs inte ut något.

och inte din heller @nders, få ett felmess:

Invalid procedure call or argument: 'left'

Medlem sedan dec. 200012 464 inlägg
#7

Får du in något vettigt i strHTML då?

Jag testade delen med regexp med en påhittad text och det fungerade bra för mig.

Medlem sedan dec. 2000503 inlägg
#8

Om jag gör så här innan:
strHTML = replace(strHTMLchr(10),"")

Så fungerar det. men den siver barta ut första nyheten, det finns flera stycken.
<!--Nyheter-->en nyhet<!--Nyheter SLUT-->
<!--Nyheter-->en nyhet<!--Nyheter SLUT-->
<!--Nyheter-->en nyhet<!--Nyheter SLUT-->

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)