Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 23:57

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



RegEx Html-Code filtern Problem

Discussion on RegEx Html-Code filtern Problem within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
Benjihz's Avatar
 
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
RegEx Html-Code filtern Problem

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() 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.

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
Benjihz is offline  
Old 10/22/2015, 23:11   #2
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
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?
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
YatoDev is offline  
Old 10/23/2015, 00:30   #3
 
Benjihz's Avatar
 
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
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?
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
Benjihz is offline  
Old 10/23/2015, 01:08   #4
Moderator


 
elite*gold: 558
Join Date: Feb 2010
Posts: 6,544
Received Thanks: 1,424
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
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.
ComputerBaer is offline  
Old 10/23/2015, 01:35   #5
 
MrDami123's Avatar
 
elite*gold: 56
Join Date: Oct 2010
Posts: 3,409
Received Thanks: 1,219
Bitte bitte nimm doch einen HTML Parser für sowas..
MrDami123 is offline  
Thanks
2 Users
Old 10/23/2015, 01:59   #6
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
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
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?
YatoDev is offline  
Thanks
1 User
Old 10/23/2015, 11:27   #7
 
Benjihz's Avatar
 
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
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

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..
Das ist ein Einzeiler auch ohne "externen" Parser. Im Umgang mit RegEx geübt zu sein kann denke ich auch nicht schaden
Benjihz is offline  
Old 10/23/2015, 21:07   #8
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462


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
YatoDev is offline  
Old 10/25/2015, 17:04   #9
 
MrDami123's Avatar
 
elite*gold: 56
Join Date: Oct 2010
Posts: 3,409
Received Thanks: 1,219
Parser: 6min
Leute fragen wie Regex geht: 24h und ggf. immer noch kein Erfolg.
MrDami123 is offline  
Old 10/25/2015, 17:34   #10
 
Benjihz's Avatar
 
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
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.
Benjihz is offline  
Old 10/25/2015, 20:32   #11
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
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.....
YatoDev is offline  
Old 10/25/2015, 23:47   #12
 
.SkyneT.'s Avatar
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
Quote:
Originally Posted by »FlutterShy™ View Post
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:
.SkyneT. is offline  
Thanks
1 User
Old 10/26/2015, 03:16   #13
 
tolio's Avatar
 
elite*gold: 2932
The Black Market: 169/1/0
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
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.
tolio is offline  
Old 10/26/2015, 08:28   #14
 
MrDami123's Avatar
 
elite*gold: 56
Join Date: Oct 2010
Posts: 3,409
Received Thanks: 1,219
Quote:
using regex as a tool to process HTML establishes a breach between this world and the dread realm of c͒ͪo͛ͫrrupt entities


MrDami123 is offline  
Old 11/03/2015, 16:56   #15
 
Padrio's Avatar
 
elite*gold: 0
Join Date: Jul 2015
Posts: 192
Received Thanks: 67
Quote:
Originally Posted by MrDami123 View Post


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.
Padrio is offline  
Reply


Similar Threads Similar Threads
Regex problem / vb.net
01/26/2014 - .NET Languages - 2 Replies
hi, ich möchte von der url "http://www.elitepvpers.com/forum/" den profillink auslesen. folgenden code habe ich: ("\href=""\(?<string2>(.*))\ ""\/>") funktioniert aber irgendwie nicht. kann mir vielleicht jemand helfen? Danke :)
[Vb.net] Regex Problem
07/13/2013 - .NET Languages - 0 Replies
hat sich erledigt
[C#]RegEx Problem
11/29/2011 - .NET Languages - 4 Replies
Also ich habe ein Problem, hab ein Patter erstellt: rf_token: '(\w.*)' Nach RegexBuddy gibt es 2 Machtes und in der zweitem Match ist richtige Wert. Aber mit diesem Code bekomme ich Wert nicht wieso wo ist Fehler? string re1 = "rf_token: '(\\w.*)'"; // Variable Name 1 Regex r = new Regex(re1, RegexOptions.IgnoreCase | RegexOptions.Singleline); Match m = r.Match(Winhttp.Body); String var1 = m.Groups.ToString();
Tool to aid the creation of RegEx offset finders - AutoIt code included
09/05/2011 - PW Hacks, Bots, Cheats, Exploits - 9 Replies
When I was making my offset finders for my real chat filters tool I got pretty pissed off with having to turn code like this: CPU Disasm Address Hex dump Command Comments 00604B30 /. 53 PUSH EBX 00604B31 |. 8B5C24 08 MOV EBX,DWORD PTR SS: 00604B35 |. 56 PUSH ESI 00604B36 |. 8B7424 10 MOV ESI,DWORD PTR SS: 00604B3A |. 57 PUSH EDI 00604B3B |. 56 PUSH ESI ...
[C#] Problem mit Regex
07/11/2010 - .NET Languages - 2 Replies
Huhu, Ich hab da ein kleines Problem was ich irgendwie nicht schaffe zu lösen.. Also ich hab folgenden Source: public List<string> GetHtmlLinks(string html) { string linkPattern = "<a href=\"(.*?)\">(.*?)</a>"; MatchCollection linkMatches = Regex.Matches(html, linkPattern, RegexOptions.Singleline);



All times are GMT +2. The time now is 23:57.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.