Archief - VB.NET - Probleem met regex

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bauhaus

Legacy Member
Ooit eens begonnen in Visual Studio 2005 aan een filmdatabase die gegevens ophaalt via IMDB.
Door omstandigheden niet kunnen verder doen en vandaag ben ik er terug aan begonnen (in Visual Studio 2008).
Nu, probleem is dat het ophalen van het filmjaar niet meer lukt (vroeger in VS 2005 wel), ik krijg gewoon een blanco.
In regexbuddy heb ik de regex voor het filmjaar eens getest en dat is geen probleem. Maar in VS 2008 lukt het me niet... springt VS 2008 soms anders om met regex dan VS 2005 ??
Waar zit het probleem ?

Code:
Private Sub ButtonSearchMain_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSearchMain.Click
                
        If RadioButtonSearchMovie.Checked() = True Then
            If TextBoxSearchMovie.Text = "" Then
                MessageBox.Show("Please insert an IMDB number !")
            Else
                Dim req As System.Net.HttpWebRequest
                Dim res As System.Net.HttpWebResponse
                Dim sr As System.IO.StreamReader
                Dim html As String
                Dim cmd As String
                Dim info As String
                Dim expressie As Regex
                Dim komma As Integer
                Dim temp As String

                cmd = TextBoxSearchMovie.Text

                If ValidCommand(cmd) Then

                    req = System.Net.WebRequest.Create("http://www.imdb.com/title/tt" & cmd & "/")
                    
                    res = req.GetResponse()

                    sr = New StreamReader(res.GetResponseStream())

                    html = sr.ReadToEnd()

                    expressie = New Regex("(?<=<(title)>).*(?=\()", _
                        RegexOptions.IgnoreCase)
                    fullTitle = (expressie.Match(html).Value)
                    title = fullTitle.Trim
                    title = ConvertHexToChar(title)
                    info = "Title: " + title + Environment.NewLine

                    expressie = New Regex("\d{4}(?=\)</title>)", _
                        RegexOptions.IgnoreCase)             
                    year = expressie.Match(html).Value
                    info += "Year: " + year + Environment.NewLine

                    expressie = New Regex("(?<=Directed.by.).*?(?=\.)", _
                        RegexOptions.IgnoreCase)
                    director = expressie.Match(html).Value
                    komma = director.IndexOf(",")
                    If komma <> -1 Then
                        expressie = New Regex(".*(?=,)", RegexOptions.IgnoreCase)
                        directors = expressie.Match(director).Value
                        temp = ConvertHexToChar(directors)
                        expressie = New Regex("(?<=,).*", RegexOptions.IgnoreCase)
                        directors = ConvertHexToChar(expressie.Match(director).Value)                        
                        director = temp + " &" + directors
                    Else
                        director = ConvertHexToChar(director)
                    End If

                    info += "Director: " + director

                    MessageBox.Show(info)
                    
                    sr.Close()
                    res.Close()
                Else
                    MessageBox.Show("Please insert a valid IMDB number !")
                End If
            End If
        End If
    End Sub

NeverwinterX

Legacy Member
Het is de website zelf die veranderd is.
Vroeger stond in de code bijvoorbeeld:
<title>Fight Club (1999)</title>
Nu staat er:
<title>Fight Club (1999) - IMDb</title>
Je moet dus rekening houden met die " - IMDb" dat erbij komt (en het op een robuustere manier aanpakken eigenlijk).

NeverwinterX

Legacy Member
Bizar, ik wel: http://dl.dropbox.com/u/15319008/imdbfightclub.png
Serveert imdb een andere versie naargelang firefox/windows versie (of naargelang je ingelogd bent? ik was niet ingelogd alleszins)? Forceer anders eens een refresh op imdb: ctrl+F5.
Laat je code de hele html eens uitprinten, dan zie je welke versie hij krijgt.

Bauhaus

Legacy Member
NeverwinterX zei:
Bizar, ik wel: http://dl.dropbox.com/u/15319008/imdbfightclub.png
Serveert imdb een andere versie naargelang firefox/windows versie (of naargelang je ingelogd bent? ik was niet ingelogd alleszins)? Forceer anders eens een refresh op imdb: ctrl+F5.
Laat je code de hele html eens uitprinten, dan zie je welke versie hij krijgt.
Inderdaad, wanneer ik uitlog dan staat die '-imdb' wél op de bronpagina.
Mogelijk komt het omdat ik nog de oude weergave van films heb wanneer ik ingelogd ben.
Heb mijn regex aangepast en nu werkt het terug. :niceone:
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan