/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Regulære udtryk - er dette korrekt?
Fra : Morten


Dato : 23-01-05 03:53

Hejsa

Jeg har en masse HTML kode, og jeg ønsker at returnere alt hvad der står
imellem <div> og </div>
ved hjælp af regulære udtryk, men er det bare "<div>*</div>" ? ... for den
returnere intet ...

/Morten



 
 
Torben Brandt (23-01-2005)
Kommentar
Fra : Torben Brandt


Dato : 23-01-05 15:22

Morten wrote in dk.edb.internet.webdesign.serverside.asp:
> Jeg har en masse HTML kode, og jeg ønsker at returnere alt hvad der står
> imellem <div> og </div>
> ved hjælp af regulære udtryk, men er det bare "<div>*</div>" ? ... for
den
> returnere intet ...

Nej, ikke helt :)
Prøv noget i stil med dette:
s = "bla bla<div>første div</div>bla bla<div>anden div</div>bla bla"
Set oRegEx = New RegExp
oRegEx.Global = True
oRegEx.IgnoreCase = True
oRegEx.Pattern = "<div>(.*?)</div>"
Set oMatches = oRegEx.Execute(s)
For Each oMatch In oMatches
Response.Write oMatch.SubMatches(0) & "<hr>"
Next

/Torben

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Morten (23-01-2005)
Kommentar
Fra : Morten


Dato : 23-01-05 17:40

"Torben Brandt" <ukendt1000@hotmail.com> skrev i en meddelelse
news:41f3b2eb$0$48322$14726298@news.sunsite.dk...

> s = "bla bla<div>første div</div>bla bla<div>anden div</div>bla bla"

Jeg kan godt se at dit eksempel virker, men den virker stadig ikke i min
kode.

Det jeg har gjort er at hente en masse HTML kode via asphttp, og det er en
del af den kode jeg skal afgrænse - når jeg bruger dit udtryk får jeg intet
resultat, selvom html koden indeholder både <div> og </div>

Er der nogen der kan have en ide om hvad jeg gør galt?




Torben Brandt (23-01-2005)
Kommentar
Fra : Torben Brandt


Dato : 23-01-05 21:22

Morten wrote in dk.edb.internet.webdesign.serverside.asp:
> "Torben Brandt" wrote in dk.edb.internet.webdesign.serverside.asp:
>
> > s = "bla bla<div>første div</div>bla bla<div>anden div</div>bla bla"
>
> Jeg kan godt se at dit eksempel virker, men den virker stadig ikke i min
> kode.
>
> Det jeg har gjort er at hente en masse HTML kode via asphttp, og det er en
> del af den kode jeg skal afgrænse - når jeg bruger dit udtryk får jeg intet
> resultat, selvom html koden indeholder både <div> og </div>
>
> Er der nogen der kan have en ide om hvad jeg gør galt?

Det er svært, når vi ikke har noget kode. Prøv at post noget af den kode du
bruger...
Prøv også at del det op i bidder:
1) Returnerer dit asphttp overhovedet noget?
2) Prøv så at fjern asphttp-delen og hardcode den streng den returnerede.
Virker det nu?

/Torben

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Morten (23-01-2005)
Kommentar
Fra : Morten


Dato : 23-01-05 22:05


"Torben Brandt" <ukendt1000@hotmail.com> skrev i en meddelelse
news:41f4074e$0$48328$14726298@news.sunsite.dk...
>
> Det er svært, når vi ikke har noget kode. Prøv at post noget af den kode
du
> bruger...
> Prøv også at del det op i bidder:
> 1) Returnerer dit asphttp overhovedet noget?

Ja, for hvis jeg f.eks. viser variablen i et textarea kan jeg se alt HTML
koden, som er lang og jeg kan se at den indeholder DIV tagsne ...

> 2) Prøv så at fjern asphttp-delen og hardcode den streng den returnerede.

Der kom nogle fag-udtryk jeg ikke kendte - hvordan gør jeg dette?




Torben Brandt (24-01-2005)
Kommentar
Fra : Torben Brandt


Dato : 24-01-05 17:54

Morten wrote in dk.edb.internet.webdesign.serverside.asp:
> Torben Brandt wrote in dk.edb.internet.webdesign.serverside.asp:
> >
> > Det er svært, når vi ikke har noget kode. Prøv at post noget af den kode
> > du bruger...
> > Prøv også at del det op i bidder:
> > 1) Returnerer dit asphttp overhovedet noget?
>
> Ja, for hvis jeg f.eks. viser variablen i et textarea kan jeg se alt HTML
> koden, som er lang og jeg kan se at den indeholder DIV tagsne ...

Glimrende. Så langt, så godt :)

> > 2) Prøv så at fjern asphttp-delen og hardcode den streng den returnerede.
>
> Der kom nogle fag-udtryk jeg ikke kendte - hvordan gør jeg dette?

Sorry :)
Det jeg mener er hvis man har noget kode i stil med:
s = EnIndvikletFunktion(..)
Set oRegEx = New RegExp
...
Set oMatches = oRegEx.Execute(s)
Så vidste man jo ikke om fejlen var i det ene eller det andet funktionskald.
Nu ved vi at det første (kaldet til asphttp) virker, så vi koncentrerer os om
det sidste.

I dit textarea kan du se præcist hvad asphttp indeholder - eller med andre
ord, hvad variablen s indeholder (eller hvad du nu har kaldt din variabel).
Lad os sige at s indeholder noget i denne stil:
<html>
...
<h1>header</h1>
<div>afsnit 1</div>
<div>
... en masse linier
</div>
...
</html>
Så kan det være lidt svært at overskue, hvad oRegEx får ud af det.

I stedet for den lange kode med
s = EnIndvikletFunktion(..)
Set oRegEx = New RegExp
...
Set oMatches = oRegEx.Execute(s)
så laver vi kun en test-side, som kun indeholder
s = "<div>afsnit 1</div>"
Set oRegEx = New RegExp
...
Set oMatches = oRegEx.Execute
Response.Write "Matches: " & oMatches.Count
Hvor du prøver at sætte s-strengen til forskellige dele af det asphttp
returnerede.

På den måde kan du lave små, kontrollerede eksempler i stil med det jeg lagde
ud med i denne tråd.


PS Nu har jeg så skrevet en lang smøre om det, men har fået på fornemmelsen
hvad grunden er til at det ikke fungerer:
I stedet for
(.*?)
i oRegEx.Pattern skal der nok snarere stå
([\S\s]*?) ' et stort S og et lille s
Grunden er at . ikke matcher linieskift, så hvis der er linieskift indenfor
dine <div> så kan det være grunden. Så prøv at lave den rettelse først ;)

Du kan se hvad de enkelte dele betyder her:
<URL:http://msdn.microsoft.com/library/en-us/script56/html/vsproPattern.asp>

/Torben

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Morten (24-01-2005)
Kommentar
Fra : Morten


Dato : 24-01-05 18:54

"Torben Brandt" <ukendt1000@hotmail.com> skrev i en meddelelse
news:41f5282b$0$48320$14726298@news.sunsite.dk...

> ([\S\s]*?) ' et stort S og et lille s
> Grunden er at . ikke matcher linieskift, så hvis der er linieskift
indenfor
> dine <div> så kan det være grunden. Så prøv at lave den rettelse først ;)

Jeg takker for instruktionerne !

Jeg prøvede at rette dette, og det var faktisk hvad der skulle til - nu
virker det perfekt !




Morten (23-01-2005)
Kommentar
Fra : Morten


Dato : 23-01-05 17:45


"Torben Brandt" <ukendt1000@hotmail.com> skrev i en meddelelse
news:41f3b2eb$0$48322$14726298@news.sunsite.dk...
>
> s = "bla bla<div>første div</div>bla bla<div>anden div</div>bla bla"

Prøv f.eks. at ændre den til:

s = "<div><p></div>"

så skal den jo returnere "<p>" ... men det gør den ikke ... ?

/Morten



Torben Brandt (23-01-2005)
Kommentar
Fra : Torben Brandt


Dato : 23-01-05 21:18

Morten wrote in dk.edb.internet.webdesign.serverside.asp:
> "Torben Brandt" wrote in dk.edb.internet.webdesign.serverside.asp:
> >
> > s = "bla bla<div>første div</div>bla bla<div>anden div</div>bla bla"
>
> Prøv f.eks. at ændre den til:
>
> s = "<div><p></div>"
>
> så skal den jo returnere "<p>" ... men det gør den ikke ... ?

Jo, den gør...?
Du skal bare huske at hvis man skriver <p> til browseren, så kan man ikke
se det, men hvis du siger Vis Kilde, så står det der...

/Torben

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Morten (23-01-2005)
Kommentar
Fra : Morten


Dato : 23-01-05 22:04

"Torben Brandt" <ukendt1000@hotmail.com> skrev i en meddelelse
news:41f40695$0$48316$14726298@news.sunsite.dk...
>
> Jo, den gør...?
> Du skal bare huske at hvis man skriver <p> til browseren, så kan man ikke
> se det, men hvis du siger Vis Kilde, så står det der...

Det kom jeg netop også i tanke om - min fejl....



Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408803
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste