Avatar billede kratluskeren Nybegynder
10. marts 2004 - 13:27 Der er 6 kommentarer og
1 løsning

Plukke data ud af streng II

Fortsættelse af http://www.eksperten.dk/spm/473504

Har lige endnu et spg.

Hvis nu jeg ønsker at søge en tekst igennem og trække det ud, der står mellem to udtryk
<span class="text">Tekst 1</span>
<span class="text">Tekst 2</span>
<span class="text">Tekst 3</span>

Hvordan gøres det så via regExp?
Output skal i dette tilfælde være:
Tekst 1
Teskt 2
Tekst 3
Avatar billede nozio Nybegynder
10. marts 2004 - 14:09 #1
Prøv med den her:

sogStart    = "<span class=""text"">"
sogSlut        = "</span>"
theText     = strTemp
strCount     = UBound(split(theText, sogStart))

For counter = 1 to strCount
    theStart     = inStr(theText,sogStart)
    theEnd         = inStr(theText,sogSlut)
    theCount     = theEnd - theStart
    theResult     = Mid(theText,theStart + 1,theCount - 1)
    theText     = right(theText,len(theText) - theEnd)
    response.write Mid(theResult,Len(sogStart)) & "<br>"
Next
Avatar billede nozio Nybegynder
10. marts 2004 - 14:10 #2
Ups - det var et svar - hvis du kan bruge det.
Avatar billede kratluskeren Nybegynder
10. marts 2004 - 14:12 #3
Hej
Kan det formuleres i en enkelt linie såsom denne:
regEx.Pattern = "((http://www\.tester\.dk\/test\.asp\?id=)(\w)+(&item=)(\w)

Som jeg blot kan smide ind i nedenstående.
Så holder jeg det dynamisk nemlig.

Function RegExpTjek(strng)
    Dim regEx, Match, Matches  ' Create variable.
    Set regEx = New RegExp  ' Create a regular expression.
    regEx.Pattern = "((http://www\.tester\.dk\/test\.asp\?id=)(\w)+(&item=)(\w)+)"  ' Set pattern.
    regEx.IgnoreCase = True  ' Set case insensitivity.
    regEx.Global = True  ' Set global applicability.
    Set Matches = regEx.Execute(strng)  ' Execute search.
    For Each Match in Matches  ' Iterate Matches collection.
      RetStr = RetStr & " ; " & Match.Value
    Next
    RegExpTjek = RetStr
  End Function
Avatar billede kratluskeren Nybegynder
10. marts 2004 - 16:04 #4
...jeg så jo i forrige dialog at du havde styr på de patterns der :)
Avatar billede kratluskeren Nybegynder
10. marts 2004 - 16:47 #5
Hej nozio
Jeg ønsker en løsning der bygger på regExp da jeg samlet set vil have et dynamisk modul der kan fodres med noget data og så spytte mit resultat ud.

Hvis jeg alligevel bliver nødt til at benytte din ovenstående løsning skal jeg nok smide nogle points
Avatar billede eagleeye Praktikant
10. marts 2004 - 18:39 #6
Du kan omskrive funktion sådan her, måske den skulle hedde noget andet:


<%
Function RegExpTjek(strng)
    Dim regEx, Match, Matches  ' Create variable.
    Set regEx = New RegExp  ' Create a regular expression.
    regEx.Pattern = "<span class=""text"">(.*?)</span>"  ' Set pattern.
    regEx.IgnoreCase = True  ' Set case insensitivity.
    regEx.Global = True  ' Set global applicability.
    Set Matches = regEx.Execute(strng)  ' Execute search.
    For Each Match in Matches  ' Iterate Matches collection.
      if RetStr <> "" then RetStr = RetStr & ";"
      RetStr = RetStr & Match.Value
    Next
    RegExpTjek = RetStr
  End Function
%>

<%
'Lille eks:
str = "<span class=""text"">Tekst 1</span>"
str = str & "<span class=""text"">Tekst 2</span>"
str = str & "<span class=""text"">Tekst 3</span>"

Response.Write RegExpTjek(str)
%>
Avatar billede kratluskeren Nybegynder
11. marts 2004 - 11:04 #7
Thx det er sq altid rart at få besøg af dig :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester