Du bist nicht angemeldet.

Dodo

Super Moderator

  • »Dodo« ist der Autor dieses Themas

Beiträge: 4 961

Dabei seit: 5. Oktober 2008

Wohnort: Berlin

Hilfreich-Bewertungen: 586

  • Private Nachricht senden

61

Montag, 3. Mai 2010, 19:22

Nun auch wenn man es nicht mit RegEx macht, dann sollte man sicherlich keine VB6 Befehle mehr nutzen, sofern man mit Vb.NET programmierst.

InStr() => IndexOf()
Mid$ => Substring()

InStr und Mid wird man in VB.NET niemals brauchen. Es ist schade das Ms sich entschlossen hat die alten Befehle weiterhin zu unterstützen, weil sie der Meinung sind den alten VB6lern so den Umstieg zu erleichtern, halte ich aber für Schwachsinn, weil man sich eh komplett anderes Programmieren aneignen muss und es eh vieles neues gibt, da kann man gleich richtig OOP machen und die entsprechenden Klassen nutzen.
KEINE VB-FRAGEN ÜBER PN STELLEN!

Wenn du einem Hungernden einen Fisch schenkst, wird er morgen wieder hungrig sein, bringst du ihm das Fischen bei, wird er nie wieder hungrig sein.

Alle Copy & Paste Geber und Forderer, nehmt euch dies zu Herzen!

EasyCoder

Registrierter Benutzer

Beiträge: 31

Dabei seit: 2. April 2010

  • Private Nachricht senden

62

Montag, 3. Mai 2010, 20:40

Die Befehle benutzen noch viele genug, um es weiterzuzulassen.
Wenn du wegen paar befehlen merkerst, kannst du ja gleich c++ lernen.
Da hast du wenigstens keine Befehlsänderung.
Jetzt ohne flags.
Makert hier rum wegen alte Befehle.
Ich hab gerade mal ein Jahr lang vb gerlernt und bin 14
ich sitze eig gar nicht mehr an vb sondern an c++
boa
anderes programmieren ist gut XD

Dodo

Super Moderator

  • »Dodo« ist der Autor dieses Themas

Beiträge: 4 961

Dabei seit: 5. Oktober 2008

Wohnort: Berlin

Hilfreich-Bewertungen: 586

  • Private Nachricht senden

63

Montag, 3. Mai 2010, 20:46

Ja und irgendwann entschließt sich MS die alten Befehle in folgenden Framework Versionen nicht mehr zu unterstützen, dann hat man ein Problem und kann seine ganzen Programme ändern.
Um kürze gehts ja nicht, sondern Codestil, sauberkeit des Codes, quasie wie eine Validierung unter HTML. Da geht auch vieles, aber nicht alles ist Valide und auch hier sollte man als Webseiten ersteller drauf achten Validen HTML Code zu erstellen, weil irgendwann die Browser Engines auch nicht mehr jeden Fehler verzeihen, sondern sich strikt an den Standard halten.
KEINE VB-FRAGEN ÜBER PN STELLEN!

Wenn du einem Hungernden einen Fisch schenkst, wird er morgen wieder hungrig sein, bringst du ihm das Fischen bei, wird er nie wieder hungrig sein.

Alle Copy & Paste Geber und Forderer, nehmt euch dies zu Herzen!

mbfan

MyMusic

  • »mbfan« ist männlich

Beiträge: 131

Dabei seit: 1. Februar 2009

Wohnort: Hohenstein Holzhausen

Frühere Benutzernamen: pihreut

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

64

Dienstag, 11. Mai 2010, 17:05

Hallo,
ich habe ein Problem mit den "mehrerern".
Und zwar habe ich den Code ein bisschen angepasst, sodass er die Links anstatt in einer Listbox als Zeile in einer RichTextBox gespeichert werden. Aber es funktioniert nicht: Es kommt keine Fehlermeldung, aber es wird keiner der vier Test-Links in die RTB geschrieben. Als ich mir alle Strings anzeigen ließ, kamen vier leere MsgBoxen.
Testdatei --> Die leeren Bilder sind beabsichtigt.

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim Lines() As String = Hintergrund.txt_links.Text.Split(vbNewLine)
        Try
            If My.Computer.FileSystem.FileExists(Application.StartupPath & "\temp.txt") Then
                My.Computer.FileSystem.DeleteFile(Application.StartupPath & "\temp.txt")
            End If
            My.Computer.Network.DownloadFile(Lines(0), Application.StartupPath & "\temp.txt")
            Dim rx As New Regex("<img(.*)src=""(?<url>([a-zA-Z0-9.:-_/]+))""(.*)>", RegexOptions.Compiled Or RegexOptions.IgnoreCase)

            Dim rxMatches As MatchCollection = rx.Matches(My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\temp.txt"))
            For Each oMatch As Match In rxMatches
                MsgBox(oMatch.Groups(Lines(0)).ToString())
                Hintergrund.txt_dateien.Text = Hintergrund.txt_dateien.Text & oMatch.Groups(Lines(0)).ToString() & vbNewLine
            Next
        Catch ex As Exception
            MsgBox("Fehler beim auslesen der Links von der Seite " & Lines(0) & ":" & vbNewLine & vbNewLine & ex.Message)
        End Try
Ich hoffe, man kann mir helfen,
mbfan
You should live for that what you belive. - Drag-Drop Beschreibung

ichwars

Registrierter Benutzer

  • »ichwars« ist männlich

Beiträge: 77

Dabei seit: 26. April 2009

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

65

Samstag, 15. Mai 2010, 14:56

Hi,

ich hab ebenfalls ein Problem mit dem ganzen und zwar möchte ich aus dem Quelltext folgendes auslesen:

Quellcode

1
<td headers="thAnzahl" align="right">100.000</td>


mein Code dazu: (stammt hier aus dem thread)

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim adress As String
        Dim w As New WebClient
        adress = TextBox45.Text
        Dim quelltext As String = w.DownloadString(adress)
        Dim WertRegex1 As New System.Text.RegularExpressions.Regex("<td headers=\""thAnzahl\"" align=\""right\"">(?<Wert2>([0-9.]*))</td>")
        Dim Wert2 As String = WertRegex1.Match(quelltext).Groups("Wert2").ToString()

        TextBox44.Text = Wert2
    End Sub


Das Problem ist das thAnzahl mehrmals im Quelltext vorkommt und ich auch mehrere Textboxen habe. Es wird aber immer nur der erste Wert ausgelesen.
Wie bekmme ich die anderen Werte nun in die weiteren TextBoxen?

MfG

Dodo

Super Moderator

  • »Dodo« ist der Autor dieses Themas

Beiträge: 4 961

Dabei seit: 5. Oktober 2008

Wohnort: Berlin

Hilfreich-Bewertungen: 586

  • Private Nachricht senden

66

Samstag, 15. Mai 2010, 22:37

Hast du dir den ersten Beitrag richtig angeschaut? Unten steht der Code wie man eine RegEx Collection auslesen kann, wenn die Pattern auf mehrere Stellen zutreffen.
KEINE VB-FRAGEN ÜBER PN STELLEN!

Wenn du einem Hungernden einen Fisch schenkst, wird er morgen wieder hungrig sein, bringst du ihm das Fischen bei, wird er nie wieder hungrig sein.

Alle Copy & Paste Geber und Forderer, nehmt euch dies zu Herzen!

ichwars

Registrierter Benutzer

  • »ichwars« ist männlich

Beiträge: 77

Dabei seit: 26. April 2009

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

67

Sonntag, 16. Mai 2010, 00:46

So ich hab mir das jetzt nochmal alles durch gelesen. Aber irgend wie bin ich nicht wirklich schlauer geworden.

Zum einen nutze ich keine ListBox sonder textBoxe (kann auch keine Listbox nutzen). Und zum anderen stehen nicht mehrere Werte in einer td sondern die besagte td kommt innerhalb des Quelltextes mehrmals vor.

Bsp:

Quellcode

1
2
3
4
5
6
7
8
<tr>
<td headers="thEinheit">Wassermine</td>
<td headers="thAnzahl" align="right">100.000</td>
</tr>
<tr>
<td headers="thEinheit">Landmine</td>
<td headers="thAnzahl" align="right">20.000</td>
</tr>


mfg

Dodo

Super Moderator

  • »Dodo« ist der Autor dieses Themas

Beiträge: 4 961

Dabei seit: 5. Oktober 2008

Wohnort: Berlin

Hilfreich-Bewertungen: 586

  • Private Nachricht senden

68

Montag, 17. Mai 2010, 02:38

Nun dann scheinst du wohl noch nicht weit genug zu sein um dies anzuwenden, mehr hilfe geht nun wirklich nicht. Alleine das du anmerkst das keine Listbox nutzen willst sondern eine Textbox und das wohl nun aus dem Code nicht wirklich für deine Zwecke ändern kannst, sagt mir das noch nichtmal ansatzweise die Grundlagen beherscht.
Das hat nun nichts mit RegEx zu tun, was zugegeben ein wenig komplizierter ist, aber eine einfache Schleife und Zuweisung sollte man definitv alleine hinbekommen wenn man sich ein wenig mit der Materie auseinander setzten will.

Zudem ist das mit der RegEx Match Collection genau das was du benötigst, denn wenn ein Pattern String setzt trifft der eben auf mehrere Stellen im Quelltext zu und je nachdem wie oft der zutrifft wird der eben in dieser Collection vorhanden sein.

Einen für dich zugeschnittenen Code zum Copy und Paste wirste von mir mit sicherheit nicht bekommen, denn das ist nicht Sinn der Sache, hier soll man Lernen und dafür ist der Code mehr als ausreichend, was man nicht weiß Googlet man und ließt es auf MSDN nach wo eine ausführliche Dokumentation über die einzelnen Funktionen sind.
KEINE VB-FRAGEN ÜBER PN STELLEN!

Wenn du einem Hungernden einen Fisch schenkst, wird er morgen wieder hungrig sein, bringst du ihm das Fischen bei, wird er nie wieder hungrig sein.

Alle Copy & Paste Geber und Forderer, nehmt euch dies zu Herzen!

BlackHook

Registrierter Benutzer

Beiträge: 21

Dabei seit: 3. April 2010

Hilfreich-Bewertungen: 4

  • Private Nachricht senden

69

Donnerstag, 20. Mai 2010, 21:08

Das Problem ist, man möchte nur C&P coden. Lernen tut weh.
Ich code ca. 3-4 Wochen in NET, und ja, das ist mein code was nun kommt.
Falls die Profis was bemängeln möchten, sorry, besser kann ich es nicht. Bin ein Neuling.

@ichwars
Ein wenig googeln, ein wenig Selbstinitiative und du hättest es geschaft.
zurücklehnen ist einfacher nicht wahr ?

Hier die C&P Lösung für dich. Wenn du das nicht hinkriegst, dann lasse es sein mid dem coden, es wird eh nichts.
Lerne paar Grundbegriffe, dann fange neu an.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    	Dim RegEx_Treffer As New Regex("<td headers=""thEinheit"">(?<Treffer>(.*?))</td>")
    	Dim Treffergruppe As MatchCollection
    	Dim Treffer As Match
    	Dim ListBox As New ListBox
    	Dim Zahl As Integer
    	Try
        	Treffergruppe = RegEx_Treffer.Matches(RichTextBox1.Text)
        	For Each Treffer In Treffergruppe
            	ListBox.Items.Add(Treffer.Groups("Treffer").Value)
        	Next
        	For Zahl = 0 To ListBox.Items.Count
            	TextBox1.Text &= ListBox.Items(Zahl) & vbCrLf
        	Next
    	Catch ex As Exception
    	End Try


Und wenn du gleich schreibst, da ist aber eine RichTextBox und keine TextBox, dann war es die letzte Hilfe für dich.

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

70

Donnerstag, 20. Mai 2010, 21:16

3-4 Wochen und schon RegEx Respekt...
aber etwas zu verbessern hab ich trotz allem noch, dein Pattern stimmt noch nicht ganz(der trifft nur für ein einzelnes td Element zu)

Quellcode

1
"<td headers=""thEinheit"">(?<Treffer>([^>]*))</td>"

[^<]* = hier darf alles kommen außer <
und nimm für VB Code doch pls auch die VB Tags ;)
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

BlackHook

Registrierter Benutzer

Beiträge: 21

Dabei seit: 3. April 2010

Hilfreich-Bewertungen: 4

  • Private Nachricht senden

71

Donnerstag, 20. Mai 2010, 21:27

Ich habe als erstes gleich mit einem Accountchecker angefangen.
Delphi Vorkenntnisse allerdings sind vorhanden. (Kein Profi)
Ich habe gleich mit Regex versucht, und einen guten Berater gehabt, wenn man die Grundsachen erstmal geschnallt hat geht es einigermaßen.

Danke für den Tip

Visual Basic Quellcode

1
[^<]* = hier darf alles kommen außer <


Allerdings funktioniert mein code einwandfrei, eigentlich verstehe ich nicht wirklich warum ich alles ausser < erlauben sollte.
Mein Text habe ich schon erfasst, was danach kommt ist eigentlich Wurst oder?
Ich lasse mich was besseres belehren, bin wirklich nur ein Anfänger.
Und ehrlich gesagt hätte auch die Zeile gereicht

Visual Basic Quellcode

1
Dim RegEx_Treffer As New Regex("<td headers=""thEinheit"">(?<Treffer>(.*?))<")


Damit nutze ich aktiv das Zeichen "<" deshalb wundert mich hier darf alles kommen außer <

Kleine Erklärung wäre nett. Ich lerne rein autodidakt.

Nachtrag. Hier bis auf ein Minimum reduziert. Eigentlich reicht es auch.

Visual Basic Quellcode

1
Dim RegEx_Treffer As New Regex("thEinheit"">(?<Treffer>(.*))<")

ichwars

Registrierter Benutzer

  • »ichwars« ist männlich

Beiträge: 77

Dabei seit: 26. April 2009

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

72

Freitag, 21. Mai 2010, 11:27

*BlackHook
Danke für das Beispiel.

mein Endresultat

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim adress As String = "http://xxxx.html"
        Dim w As New WebClient
        'adress = TextBox45.Text
        Dim quelltext As String = w.DownloadString(adress)
        RichTextBox1.Text = quelltext
        Dim RegEx_Treffer As New Regex("<td headers=\""thEinheit\"">(?<Treffer>(.*?))</td>")
        Dim Treffergruppe As MatchCollection
        Dim Treffer As Match
        Dim ListBox As New ListBox
        Dim i As Integer
        Try
            Treffergruppe = RegEx_Treffer.Matches(RichTextBox1.Text)
            For Each Treffer In Treffergruppe
                'Umlaute ersetzen
                Dim builder As New StringBuilder(Treffer.Groups("Treffer").Value)
                With builder
                    .Replace("&szlig;", "ß")
                    .Replace("&auml;", "ä")
                    .Replace("&Auml;", "Ä")
                    .Replace("&ouml;", "ö")
                    .Replace("&Ouml;", "Ö")
                    .Replace("&uuml;", "ü")
                    .Replace("&Uuml;", "Ü")
                End With

                ListBox.Items.Add(builder.ToString())
            Next
            For i = 0 To ListBox.Items.Count
                TextBox1.Text = ListBox.Items(0)
                TextBox2.Text = ListBox.Items(1)
                TextBox3.Text = ListBox.Items(2)
                TextBox4.Text = ListBox.Items(3)
                TextBox5.Text = ListBox.Items(4)
                'weitere Textboxen
            Next
        Catch ex As Exception
        End Try


Für weitere Ideen, wie man das ganze noch verfeinern kann bin ich dankbar.
Gruß
Ichwars

Gutelaunetyp

Registrierter Benutzer

  • »Gutelaunetyp« ist männlich
  • »Gutelaunetyp« wurde gesperrt

Beiträge: 421

Dabei seit: 26. Dezember 2009

Frühere Benutzernamen: Gutelaunetyp

Hilfreich-Bewertungen: 9

  • Private Nachricht senden

73

Samstag, 3. Juli 2010, 11:32

Hallo,
das geht alles viel einfacher^^


@ sleepdaddy : myip">([^<]+) für die Ip , userid=[\d]+">([^<]+) deine 2. Frage.

@ MaDetho : block;">([^<]+)

@ Tomekk : <h1 >([^<]+)

@ Delax : info">\s+<br />\s+<span>([^<]+)


Edit :
@ C0der wieso schwerer machen wenn es doch so kurz funktioniert ?!


^^
Mfg Kevin.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Gutelaunetyp« (4. Juli 2010, 14:39)


C0der

Registrierter Benutzer

Beiträge: 265

Dabei seit: 30. November 2008

Frühere Benutzernamen: C0der

Hilfreich-Bewertungen: 12

  • Private Nachricht senden

74

Sonntag, 4. Juli 2010, 00:07

@gutelaunetyp: Immer ([^<]+)?

Performance bye bye!

xWare Development

Registrierter Benutzer

  • »xWare Development« ist männlich

Beiträge: 25

Dabei seit: 26. Juni 2010

Wohnort: Solms

  • Private Nachricht senden

75

Dienstag, 13. Juli 2010, 10:24

So, habs jetzt fast, nur... Bei mir liest er noch weiter als </div>, er liest bis zum Ende.
Mein VB-Code:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
    	Dim httpRequest As Net.HttpWebRequest = Net.HttpWebRequest.Create("http://croomeware.cr.funpic.de/test.html")
    	Dim httpResponse As HttpWebResponse = httpRequest.GetResponse()
    	Dim reader As StreamReader = New StreamReader(httpResponse.GetResponseStream)
    	Dim httpContent As String = reader.ReadToEnd

    	Dim ipRegEx As New Regex("\<div id=\""helloworld\""\>(?<string>(.*))\<\/div\>")
    	Dim HelloWorld As String = ipRegEx.Match(httpContent).Groups("string").ToString()

    	Label1.Text = HelloWorld


Die Imports sind natürlich drin.
Mein HTML Code:
<div id="helloworld">Hallo Welt!</div>

Und hinten folgt noch ein Ad von Funpic. Diesen liest er mit. Hab schon versucht, hinten 2 \\ oder auch nur noch 1 \ hinzu zufügen bringt aber alles nix. Bei 1 \ ist der Text vom Label: Normal, also "Label1" und bei 2 hinzugefügten \\ zeigt er keinen Text an. Was habe ich falsch? Bei den Zeichen kapier ich halt nur, wo die " hinmüssen. Aber was um Gottes Willen bedeuten diese \ ?!
HackerSystem v1:
Missionen - 50%
Design - 37%
Programme - 31%
Bugfixes - 80%

49,5%

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »xWare Development« (13. Juli 2010, 11:07)


jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

76

Dienstag, 13. Juli 2010, 13:11

Quellcode

1
"\<div id=\""helloworld\""\>(?<string>([^<^]*))\<\/div\>"

Edit: "\" es ist für spezielle Zeichen da...\ http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck
\d eine Ziffer
\D alles außer eine Ziffer...
usw...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

xWare Development

Registrierter Benutzer

  • »xWare Development« ist männlich

Beiträge: 25

Dabei seit: 26. Juni 2010

Wohnort: Solms

  • Private Nachricht senden

77

Mittwoch, 14. Juli 2010, 09:03

Hallöle, danke erstmal...

Nur, was bedeutet nun das:

Visual Basic Quellcode

1
[^<^]
?
HackerSystem v1:
Missionen - 50%
Design - 37%
Programme - 31%
Bugfixes - 80%

49,5%

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

78

Mittwoch, 14. Juli 2010, 12:06

ach kacke... das zweite ^ muss weg...
also: [^<]...
das ^ innerhalb der eckigen Klammern heißt alles außer das darauffolgende Zeichen...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

xWare Development

Registrierter Benutzer

  • »xWare Development« ist männlich

Beiträge: 25

Dabei seit: 26. Juni 2010

Wohnort: Solms

  • Private Nachricht senden

79

Mittwoch, 14. Juli 2010, 13:37

Dankeschön,
glaube hab's kapiert
HackerSystem v1:
Missionen - 50%
Design - 37%
Programme - 31%
Bugfixes - 80%

49,5%

Lawliet

Unknow

  • »Lawliet« ist männlich

Beiträge: 461

Dabei seit: 25. April 2010

Wohnort: Frankfurt

Hilfreich-Bewertungen: 29

  • Private Nachricht senden

80

Freitag, 3. September 2010, 21:03

Darf ich mal fragen was ich tun kann wenn 2 der selben in einem Quellcode stecken?

Visual Basic Quellcode

1
Dim ipRegEx As New Regex("\<a href=\""(?<string>([a-z.]*))""\>")

blöderweise gelangt er direkt zum zweiten ich will nur den am Anfang es gibt 2 der selben nur mit verschiedenen Inhalt.
was kann man da machen?

Thx
LG.L
Überarbeitung meines ersten Projektes (Bilder)
Screenshot_1 , Screenshot_2, Screenshot_3

Social Bookmarks