RegEx Html-Code filtern Problem

10/22/2015 21:33 Benjihz#1
Hallo,
Ich muss mich leider schon wiedermal an die Epvp Gemeinde in Sachen VB wenden ;D
Da ich HttpWebRequests nun beherrsche hab ich mir nen kleinen Treasure-Creator gebaut. Nun will ich eine Funktion einbauen die immer den Link & ID des ersten Treasure aus der Liste([Only registered and activated users can see links. Click Here To Register...]) ausließt.
Dazu habe ich RegEx verwendet.
Leider bekomme ich 0 matches. Ich gehe stark davon aus, dass das Problem bei den Zeilenumbrüchen liegt und ich deshalb keine matches bekomme. :o

Hier mal mein Code:
Code:
  Dim regex As New Regex("<td class=""smallfont"" width=""140"">Buyer</td></tr><tr><td><a href=""http://www.elitepvpers.com/theblackmarket/treasure/.*"">#.*</a></td>", RegexOptions.IgnoreCase Or RegexOptions.Multiline Or RegexOptions.Singleline)
            Dim matches As MatchCollection = regex.Matches(seitenQuelltext)

            'For Each itemcode As Match In matches
            '    MsgBox(itemcode.Value.Split("""").GetValue(5))
            'Next
            MsgBox(matches.Count)

Wäre für Hilfe sehr dankbar. :)

MfG
10/22/2015 23:11 YatoDev#2
1.) Dieser string ist doch viel zu lang bin mir sicher ein kleiner teil davon reicht schon.
2.) Ich kenn mich mit vb nicht aus aber in c# muss man die regex patterns in () packen
3.) Darf ich dich nochmal an meine http klasse in c# erinnern? [Only registered and activated users can see links. Click Here To Register...]
Die kann regex^^
4.) VB ist so eine hässliche sprache. sry dafür aber es ist so

Besser einen Html parser verwenden um viele regex zu vermeiden: HtmlAgilityPack
10/23/2015 00:30 Benjihz#3
Quote:
Originally Posted by »FlutterShy™ View Post
1.) Dieser string ist doch viel zu lang bin mir sicher ein kleiner teil davon reicht schon.
2.) Ich kenn mich mit vb nicht aus aber in c# muss man die regex patterns in () packen
3.) Darf ich dich nochmal an meine http klasse in c# erinnern? [Only registered and activated users can see links. Click Here To Register...]
Die kann regex^^
4.) VB ist so eine hässliche sprache. sry dafür aber es ist so

Besser einen Html parser verwenden um viele regex zu vermeiden: HtmlAgilityPack


1.) Meines Wissens nach geht der String leider nicht kürzer da ich immer den obersten Treasure aus der Liste brauche.

Das Problem ist, dass der String in einer neuen Zeile irgendwie aufhört und ich nicht weiß wie man vb sagt das der String trotzdem weitergeht. Der String den ich ausgewählt habe geht nunmal über 3 Zeilen :o
10/23/2015 01:08 ComputerBaer#4
Quote:
Originally Posted by Benjihz View Post
Das Problem ist, dass der String in einer neuen Zeile irgendwie aufhört und ich nicht weiß wie man vb sagt das der String trotzdem weitergeht. Der String den ich ausgewählt habe geht nunmal über 3 Zeilen :o
Ich denke dafür wirst du an den richtigen Stellen einen Zeilenumbruch einfügen müssen. z.B. "\n" / "\r\n"
Die "RegexOptions.Multiline" Einstellung wirkt sich mit Sicherheit nur auf die "dynamischen" Teile des Strings aus und nicht auf den festen Text. z.B. *

Quote:
Originally Posted by »FlutterShy™ View Post
14.) VB ist so eine hässliche sprache. sry dafür aber es ist so
Da kann ich nur zustimmen.
10/23/2015 01:35 MrDami123#5
Bitte bitte nimm doch einen HTML Parser für sowas.. [Only registered and activated users can see links. Click Here To Register...]
10/23/2015 01:59 YatoDev#6
Quote:
Originally Posted by Benjihz View Post
1.) Meines Wissens nach geht der String leider nicht kürzer da ich immer den obersten Treasure aus der Liste brauche.

Das Problem ist, dass der String in einer neuen Zeile irgendwie aufhört und ich nicht weiß wie man vb sagt das der String trotzdem weitergeht. Der String den ich ausgewählt habe geht nunmal über 3 Zeilen :o
wieso ignorierst du immer die wichtigen punkte? bei 2.) und 3.) ist die lösung.

zu 1.) Doch du kannst alle treasures auslesen und nur den ersten ausgeben

@MrDami123
Hatte ich ja auch schon erwähnt aber du willst damit wohl nicht sagen er soll eine dll includen nur um einen einzigen regex befehl rauszunehmen?
10/23/2015 11:27 Benjihz#7
Quote:
Originally Posted by »FlutterShy™ View Post
wieso ignorierst du immer die wichtigen punkte? bei 2.) und 3.) ist die lösung.

zu 1.) Doch du kannst alle treasures auslesen und nur den ersten ausgeben

@MrDami123
Hatte ich ja auch schon erwähnt aber du willst damit wohl nicht sagen er soll eine dll includen nur um einen einzigen regex befehl rauszunehmen?
Sorry ist irgendwie eine Angewohnheit, wenn ich nur Bahnhof verstehe ignoriere ich das und such mir irgendeine andere Quelle die ich verstehe. Das Problem dabei ist, dass ich dann meistens 2 Tage den Fehler im Code suchen muss und die ganze Zeit auf was anderes fixiert bin als auf den eigentlichen Fehler.

Habs aber gestern selber noch hinbekommen: SingleLine aktiviert und Zeilenumbruch mit (.*) angegeben.

Das mit dem alle auslesen und nur den ersten ausgeben lassen habe ich auch schon überlegt. Allerdings erschien mir meine Methode um einiges einfacher und außerdem hab ich sie mir überlegt :D

Danke mal wieder für eure Hilfe :)

EDIT: Und was genau findet ihr an VB immer so hässlich?

EDIT EDIT:
Quote:
Originally Posted by MrDami123 View Post
Bitte bitte nimm doch einen HTML Parser für sowas.. [Only registered and activated users can see links. Click Here To Register...]
Das ist ein Einzeiler auch ohne "externen" Parser. Im Umgang mit RegEx geübt zu sein kann denke ich auch nicht schaden :D
10/23/2015 21:07 YatoDev#8
[Only registered and activated users can see links. Click Here To Register...]

hauptsächlich aber wegen der syntax und den komischen my namespace.

Was ist dir da zu kompliziert?

Die string between funktion aus meiner klasse in vb übersetzen lassen und mal schauen obs so geht
10/25/2015 17:04 MrDami123#9
Parser: 6min
Leute fragen wie Regex geht: 24h und ggf. immer noch kein Erfolg.
10/25/2015 17:34 Benjihz#10
Quote:
Originally Posted by MrDami123 View Post
Parser: 6min
Leute fragen wie Regex geht: 24h und ggf. immer noch kein Erfolg.
Und wenn es auch 2 Wochen dauert, lohnt es sich trotzdem den Umgang mit RegEx zu lernen. Um Erfolg zu haben muss man auch was für tun gerade beim programmieren braucht man eine hohe Frustrationstoleranz.
10/25/2015 20:32 YatoDev#11
Quote:
Originally Posted by MrDami123 View Post
Leute fragen wie Regex geht: 24h und ggf. immer noch kein Erfolg.
als ob regex so schwer ist.....
10/25/2015 23:47 .SkyneT.#12
Quote:
Originally Posted by »FlutterShy™ View Post
[Only registered and activated users can see links. Click Here To Register...]
Wow, so viel Unsinn auf einer Webseite hab ich schon lange nicht mehr gesehen, hoffentlich ist das nur zur Unterhaltung gedacht.

Quote:
Originally Posted by Benjihz View Post
Und wenn es auch 2 Wochen dauert, lohnt es sich trotzdem den Umgang mit RegEx zu lernen. Um Erfolg zu haben muss man auch was für tun gerade beim programmieren braucht man eine hohe Frustrationstoleranz.
Was für einen Sinn soll es haben sich 2 Wochen an einem einzigen Lösungsweg festzubeissen, anstatt nach einem anderen besseren Weg zu suchen?

Zu der RegEx - HTML Sache lasse ich noch einen Link da:
[Only registered and activated users can see links. Click Here To Register...]
10/26/2015 03:16 tolio#13
durchaus nicht falsch der link, aber es geht hier nicht darum ein html dokument per regex zu parsen sondern lediglich eine information zu extrahieren. wenn man regex kann dauert das am ende auch nur 10sec. und damit will ich nicht sagen das der ansatz über einen parser falsch ist, sondern nur das es auch mit regex ohne problem geht wenn man ne ahnung hat was man da macht.
10/26/2015 08:28 MrDami123#14
Quote:
using regex as a tool to process HTML establishes a breach between this world and the dread realm of c͒ͪo͛ͫrrupt entities
:D:D

[Only registered and activated users can see links. Click Here To Register...]
11/03/2015 16:56 Padrio#15
Quote:
Originally Posted by MrDami123 View Post
:D:D

[Only registered and activated users can see links. Click Here To Register...]
Quote:
Moderator's Note
This post is locked to prevent inappropriate edits to its content. The post looks exactly as it is supposed to look - there are no problems with its content. Please do not flag it for our attention.
Find ich echt ziemlich genial.

@Argumentation: Ich hab jetzt keine Tests gemacht, bin mir aber ziemlich sicher das Regex da performanter ist als sich das ganze DOM runter zu parsen.