webForumDet fria alternativet

RegExp pattern, start och slut tag.

4 svar · 643 visningar · startad av Fredde Mannen

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#1

Tänk er typ denna snutt med html:

<div id="dochead"><p>sidhuvud</p><p>lite mer text</p><p>eller tabeller m.m.</p></div>
<div id="docbody"><p>lite mer text</p><p>eller tabeller m.m.</div>
<div id="docfoot"><p>sidfot</p><p>lite mer text</p><p>eller tabeller m.m.</div>

Går det med regexp hämta ut det som finns mellan de tre olika divarna.

typ:

Public Function GetContent(source as string) as HashTable

'  Kod..
 return aHashTableWithFooterHtmlBodyHtmlHeadHtml
End Function

Fråga mig om nu inte förstår vad jag syftar på. :)

KuckelMedlem sedan jan. 2002104 inlägg
#2

Testa med nåt sånt här ..

'Värdet mellan 2 html-taggar
Dim regex As Regex = New Regex("<td((.|\n)*?)</td>", RegexOptions.IgnoreCase)
Dim oM As Match = regex.Match(strContent)
Return oM.Value

'LOOPA värdet mellan tr - /tr div i ditt fall
Dim reg As New System.Text.RegularExpressions.Regex("<tr[^>]*>(.*?)</tr>", RegexOptions.Singleline)
Dim matchs As System.Text.RegularExpressions.MatchCollection
matchs = reg.Matches(strContent)

For Each m As System.Text.RegularExpressions.Match In matchs
'm.Value
Next

voigtann1Medlem sedan juni 20019 519 inlägg
#3

Har två frågor:
1. Kommer divarna kunna innehålla fler divar?
2. hur har du tänkt att det skall fungera? "GetDiv("dochead")" => <p>sidhuvud</p><p>lite mer text</p><p>eller tabeller m.m.</p>

KuckelMedlem sedan jan. 2002104 inlägg
#4

Hej

Så duktig på reqular är jag inte :) tror inte den kan innehålla fler divar.

Function GetDocHead(byval DocHead as string)as string

Dim reg As New System.Text.RegularExpressions.Regex("<div[^>]*>(.*?)</div>", RegexOptions.Singleline)
Dim matchs As System.Text.RegularExpressions.MatchCollection
matchs = reg.Matches(strContent)

For Each m As System.Text.RegularExpressions.Match In matchs

if m.value.contains(DocHead) Then
return 'm.Value
end if

Next

End function

Finns säkert ett bättre sätt att få ut detta med ReqularExpressions

GetDocHead bör returnera <p>sidhuvud</p><p>lite mer text</p><p>eller tabeller m.m.</p>

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#5

voigtann1 skrev:

Har två frågor:
1. Kommer divarna kunna innehålla fler divar?

Ja divarna kan innehålla fler divar. Dock är det inte planerat. Men framtiden kan göra vad som helst med en.

voigtann1 skrev:

2. hur har du tänkt att det skall fungera? "GetDiv("dochead")" => <p>sidhuvud</p><p>lite mer text</p><p>eller tabeller m.m.</p>

Ja så kan man säga!

Returnera innehållet så: <div id="dochead"><p>Sidhuvud</p></div> blir <p>Sidhuvud</p>

:)

123 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)