Avatar billede bgjensen Nybegynder
03. december 2007 - 22:19 Der er 8 kommentarer og
1 løsning

regex i vb.net

Jeg har følgende kode:

Imports System.Net
Imports System.Text.RegularExpressions

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim newPage As String = GetWebPage("SidenSomSkalHentes.dk")
        Dim getData As New Regex("RegexSøgningHer")
        Dim recivedData As MatchCollection = getData.Matches(newPage)
        Dim showData As Match

        For Each showData In recivedData
            ListBox1.Items.Add(showData.Groups(1))
        Next
    End Sub

    Private Function GetWebPage(ByVal url As String) As String
        Dim web As New WebClient()
        Return web.DownloadString(url)
    End Function
End Class

Hvordan laver jeg så man kan lave en regex søgning mere inden jeg outputter det som den har fundet??
Så resultatet i recivedData søges igennem igen for noget andet!
Avatar billede nielle Nybegynder
03. december 2007 - 22:23 #1
Kan du give et eksempel på hvad du ønsker at opnå?
Avatar billede bgjensen Nybegynder
03. december 2007 - 22:30 #2
Imports System.Net
Imports System.Text.RegularExpressions

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim newPage As String = GetWebPage("http://imdb.com/title/tt0416449/")

        Dim getDataDirector As New Regex("<h5>Directors?:<\/h5>(.+?)<\/div>")
        Dim recivedDataDirector As MatchCollection = getDataDirector.Matches(newPage)

        Dim showData As Match

        For Each showData In recivedDataDirector
            ListBox1.Items.Add(showData.Groups(1))
        Next
    End Sub

    Private Function GetWebPage(ByVal url As String) As String
        Dim web As New WebClient()
        Return web.DownloadString(url)
    End Function
End Class

Men det resultat som kommer ind i min listbox skal søges igennem igen med en anden regular expression inden den bliver lagt ind i listboxen, håber det giver mening.
Avatar billede nielle Nybegynder
03. december 2007 - 22:37 #3
Så er det vel klaret ved at lægge endnu en Regex- matchning til inde i

For Each showData In recivedDataDirector

- løkken.
Avatar billede bgjensen Nybegynder
03. december 2007 - 22:46 #4
jo ok, men kan man ikke lave noget ala:

Dim getDataDirector As New Regex("<h5>Directors?:<\/h5>(.+?)<\/div>")
Dim recivedDataDirector As MatchCollection = getDataDirector.Matches(newPage)
Dim getDataDirector1 As New Regex("anden søge streng")
Dim recivedDataDirector1 As MatchCollection = getDataDirector1.Matches(recivedDataDirector)

eller noget i den stil, eller skal man hente de første data ud med f.eks en for each inden man kan bruge dem?
Avatar billede nielle Nybegynder
03. december 2007 - 22:55 #5
Nej, du kan ikke "vidresende" en match på den måde. Men du kunen måske udforme den oprindelige regex på en sådan måde at du før det du leder efter i første forsøg.
Avatar billede bgjensen Nybegynder
03. december 2007 - 23:26 #6
nu ser det sådan her ud:

Imports System.Net
Imports System.Text.RegularExpressions

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim newMoviePage As String = GetWebPage("http://imdb.com/title/tt0416449/")

        Dim getDataDirector As New Regex("<h5>Directors?:<\/h5>(.+?)<\/div>", RegexOptions.Singleline)
        Dim recivedDataDirector As MatchCollection = getDataDirector.Matches(newMoviePage)

        Dim showDataDirector As Match

        For Each showDataDirector In recivedDataDirector
            Dim getDataDirector1 As New Regex("<a href=""\/Name[?\/].+?"">(.+?)<\/a>", RegexOptions.Singleline)
            Dim recivedDataDirector1 As MatchCollection = getDataDirector1.Matches(showDataDirector.Groups(1))

            Dim showDataDirector1 As Match

            For Each showDataDirector1 In recivedDataDirector1
                ListBox1.Items.Add(showDataDirector1.Groups(1))
            Next
        Next

    End Sub

    Private Function GetWebPage(ByVal url As String) As String
        Dim web As New WebClient()
        Return web.DownloadString(url)
    End Function
End Class

men det giver fejl ved getDataDirector1.Matches(showDataDirector.Groups(1))  kan ikke konventere til en streng
Avatar billede bgjensen Nybegynder
03. december 2007 - 23:38 #7
har ændret
getDataDirector1.Matches(showDataDirector.Groups(1))
til
getDataDirector1.Matches(showDataDirector.Value)

nu virker det, tak for hjælpen
Avatar billede bgjensen Nybegynder
04. december 2007 - 08:15 #8
nielle ligger du et svar, da du jo hjalp på vej med løsningen
Avatar billede nielle Nybegynder
04. december 2007 - 19:40 #9
Svar :^)
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

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