Hej och välkommen till wF!
För allt mellan <table> och </table>:
RegExp.Pattern = "<table>((?:.|\n)*?)</table>"
8 svar · 328 visningar · startad av nikkisixx
Dim objHTTP,strHTML,objRegExp,hittade,item
url = "http://blabla"
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", url , False
objHTTP.setRequestHeader "Content-type","text/html"
objHTTP.Send
strHTML=BinToText(objHTTP.responseBody,35000)
Set objHTTP = Nothing
Set RegExp = New regexp
RegExp.Global = true
RegExp.IgnoreCase = true
RegExp.Pattern = "<FONT class=""rubrik3"">(.*)</FONT>"
' Här vill jag även söka redan på raden
' RegExp.Pattern = "<FONT class=""rubrik2"">(.*)</FONT>"
Set hittade = RegExp.Execute(strHTML)
For each item in hittade
Response.Write ""& item.value &"<br>"
Next
Jag vill plocka ut flera värden ur källkoden samtidigt, helst skulle jag vilja plocka ut allt mellan <table></table> men (.*?) fungerar ej.
Hej och välkommen till wF!
För allt mellan <table> och </table>:
RegExp.Pattern = "<table>((?:.|\n)*?)</table>"
Tack Peter.
Får det inte att fungera, jag har provat detta tidigare men får felmeddelande.
Microsoft VBScript runtime error 800a139a
Vad jag har läst mig till verkar jag ha en för gammal version.
Det kanske går att skriva om på annat sätt. Vad kan förekomma mellan <table> och </table>?
Det vore ju en höjdare. Säg att tabellen ser ut såhär.
<table border="0" cellspacing="0" cellpaddning="3">
<tr style="background-color:#f2f2f2;">
<td valign="top" width="100">
<font class="text">Bla Bla</font>
</td>
</tr>
</table>
Om det bara finns en tabell i strHTML:
set re = new regexp
re.pattern = "<table[^>]*>((.|\n)*)</table>"
set m = re.execute(strHTML)
if m.count > 0 then
response.write replace(m(0).submatches(0), "<", "<")
end if
set re = nothing
Förekommer fler tabeller i strHTML blir ovanstående mindre bra, eftersom uttrycket kommer att ta med allt från den första tabellens <table> till den sista tabellens </table>.
Eftersom inte lazy quantifiers verkar stödjas kan det bli svårt att hämta ut allt mellan varje par av <table> och </table> med regex. I slutändan kanske det blir till att skriva en egen funktion som klarar biffen.
Red./ I och för sig är det ju alltid möjligt att explicit ange vilka element som får förekomma mellan tabelltaggarna.
Nu så:
set re = new regexp
re.global = true
re.pattern = "<table[^>]*>((\s*(<(tr|td|font)[^>]*>)\s*)*(\w|\s)*(</(tr|td|font)>\s*)*)"
set m = re.execute(strHTML)
for each item in m
response.write replace(item.submatches(0), "<", "<") & "<br>"
end if
set re = nothing
Kan andra element än 'tr', 'td' och 'font' förekomma är det bara att lägga till dem enligt mönstret ovan.
Tack för hjälpen Peter men får följande felmeddelande:
Object doesn't support this property or method: 'submatches'
Kan det vara så att vi har en äldre version installerad som inte stöder detta?
Ja, sannolikt är det så. Submatches stöds fr.o.m. version 5.5 av Windows Script.
Vill ni uppdatera kan följande länk vara till hjälp:
http://msdn.microsoft.com/library/default.asp?url=/downloads/list/webdev.asp