VB RegEx

07/09/2013 00:12 Ludder231#1
Hi,

ich würde aus nem Quellcode ein paar ID's auslesen. Mit BetGetween geht alles super. Nur da es von den ID's mehrere im Quelltext gibt, brauch ich regEx Matches.
PHP Code:
src="http://www.howrse.de/media/equideo/image/chevaux/normaux/arabe-small/gr-c-icone.png?158838126" class="cheval-icone " width="40" height="40"/></a>
<
a href='/elevage/chevaux/cheval?id=18923938' class='horsename'
Diese ID soll rausgefiltert werden."18923938"

Das mache ich mit
PHP Code:
Dim matches As MatchCollection Regex.Matches(PferdeOhneZucht"<a href='/elevage/chevaux/cheval?id=(.*?)' class='horsename'>")
         
'MsgBox(matches(0).Groups)
         MsgBox(matches.value) 
Das Pattern "(.*?)" werde ich noch in nur Zahlen verändern das ist bloß fürn Test. Aber ich bekomm immer error, weil er das Pattern nicht findet.

Was kann ich da machen?
07/09/2013 12:03 x]vIrus[x#2
probiers mal mit:
Code:
Dim matches As MatchCollection = Regex.Matches(PferdeOhneZucht, "<a href='/elevage/chevaux/cheval\\?id=(.*?)' class='horsename'>")
         MsgBox(matches(0).Groups)
         MsgBox(matches.value)
oder mit
Code:
Dim matches As MatchCollection = Regex.Matches(PferdeOhneZucht, "<a href='/elevage/chevaux/cheval\\?id=(.*?)' class='horsename'>", RegexOptions.SingleLine)
         MsgBox(matches(0).Groups)
         MsgBox(matches.value)
nicht getestet
07/09/2013 12:52 Ludder231#3
Nee geht leider auch nicht.

PHP Code:
  Dim PferdeOhneZucht As String pPost("http://www.howrse.de/elevage/chevaux/searchHorse""go=1&")

        
' My.Computer.FileSystem.WriteAllText("D:\Pferdohnezucht.html", PferdeOhneZucht, True)


        Dim matches As MatchCollection = Regex.Matches(PferdeOhneZucht, "[0-9]{8}")

        For Each m As Match In matches

            For Each c As Capture In m.Captures

                MsgBox(c.Value)

            Next
        Next 
Wenn ich es so mache bekomm ich etwas. Aber leider auch ne flasche Zahl weil das Pattern dann auf mehrere Sachen zutrifft. Zb:
PHP Code:
src="http://www.howrse.de/media/equideo/image/chevaux/normaux/arabe-small/gr-c-icone.png?158838126" class="cheval-icone " width="40" height="40"/></a
"158838126" png id...
07/09/2013 13:38 YatoDev#4
Es gibt generatoren für regular expressions , einfach mal googeln .
07/09/2013 17:28 Ludder231#5
Danke hat einigermaßen damit funktioniert. Kann mir hier wer sagen ob ich meine Form und den rest in einem separaten Thread laufen lassen kann? Weil meine Form sich nie richtig aktualisiert nur wenn ich zb ne Msgbox mache wir alles refreshed. Und ich hab gehört dazu sollte man lieber kein Application do events machen etc.
07/09/2013 17:38 YatoDev#6
Quote:
Originally Posted by Ludder231 View Post
Danke hat einigermaßen damit funktioniert. Kann mir hier wer sagen ob ich meine Form und den rest in einem separaten Thread laufen lassen kann? Weil meine Form sich nie richtig aktualisiert nur wenn ich zb ne Msgbox mache wir alles refreshed. Und ich hab gehört dazu sollte man lieber kein Application do events machen etc.
können ja nur erklären kann ich es nicht und können auch nicht :D

War das nicht bei System.Threading ?

Einfach mal googeln ....

Backgroundworker dürfte auch helfen
07/09/2013 17:44 Ludder231#7
Quote:
Originally Posted by »FlutterShy™ View Post
können ja nur erklären kann ich es nicht und können auch nicht :D

War das nicht bei System.Threading ?

Einfach mal googeln ....

Backgroundworker dürfte auch helfen
Ja ich hab schon mit Thraeding gearbeitet aber ich hab kp was ich suchen soll :D

Also es geht mit Backgroundwoker aber da muss man leider CheckforIllegalThreadCrossing auf false machen :(
07/09/2013 20:38 Kraizy​#8
Invoke/Delegate
07/11/2013 01:10 x]vIrus[x#9
Quote:
Originally Posted by Ludder231 View Post
Nee geht leider auch nicht.

PHP Code:
  Dim PferdeOhneZucht As String pPost("http://www.howrse.de/elevage/chevaux/searchHorse""go=1&")

        
' My.Computer.FileSystem.WriteAllText("D:\Pferdohnezucht.html", PferdeOhneZucht, True)


        Dim matches As MatchCollection = Regex.Matches(PferdeOhneZucht, "[0-9]{8}")

        For Each m As Match In matches

            For Each c As Capture In m.Captures

                MsgBox(c.Value)

            Next
        Next 
Wenn ich es so mache bekomm ich etwas. Aber leider auch ne flasche Zahl weil das Pattern dann auf mehrere Sachen zutrifft. Zb:
PHP Code:
src="http://www.howrse.de/media/equideo/image/chevaux/normaux/arabe-small/gr-c-icone.png?158838126" class="cheval-icone " width="40" height="40"/></a
"158838126" png id...
dann ist dein regex nicht eindeutig genug, ich habe lediglich deinen fehler behoben ;)