|
You last visited: Today at 15:58
Advertisement
[VB.Net] RegEx Problem (Quellcode, Zeilenumbruch)
Discussion on [VB.Net] RegEx Problem (Quellcode, Zeilenumbruch) within the .NET Languages forum part of the Coders Den category.
04/29/2013, 18:32
|
#1
|
elite*gold: 2049
Join Date: May 2012
Posts: 4,593
Received Thanks: 441
|
[VB.Net] RegEx Problem (Quellcode, Zeilenumbruch)
Hab hier nen kleinen Bot geschrieben, welcher nun einen Wert im Quelltext einer Seite auslesen soll.
Folgenden Teil brauch ich:
Code:
Es erfordert viel Disziplin und Ausdauer eine Kampfkunst zu erlernen. </span></a></span></a><br />
Erhöht ATT um 1<br />
Nächste Stufe: €5,00<br />
Dauer: 0:11:40
Wie finde ich dieses Stück per Regex?
ich habe es bereits so probiert:
Code:
Try
Dim r As New Regex("Es erfordert viel Disziplin und Ausdauer eine Kampfkunst zu erlernen. </span></a></span></a><br /> Erhöht ATT um 1<br /> Nächste Stufe: &.*?>")
Dim matches As MatchCollection = r.Matches(RichTextBox1.Text)
For Each Match As Match In matches
MsgBox(Match.Value)
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
Leider erzielte diese Suche keine Treffer.
Würde mich über schnelle Hilfe freuen, Danke im Vorraus :-)
|
|
|
04/29/2013, 19:06
|
#2
|
elite*gold: 1
Join Date: Jun 2012
Posts: 5,819
Received Thanks: 3,200
|
Poste mal den ganzen Quellcode
|
|
|
04/29/2013, 20:03
|
#3
|
elite*gold: 2049
Join Date: May 2012
Posts: 4,593
Received Thanks: 441
|
Quote:
Originally Posted by 'Heaven.
Poste mal den ganzen Quellcode
|
HTML Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de_DE" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>Pennergame - Hamburg</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="title" content="Pennergame - Hamburg" />
<meta name="author" content="Farbflut Entertainment GmbH" />
<meta name="publisher" content="Farbflut Entertainment GmbH" />
<meta name="copyright" content="Farbflut Entertainment GmbH, 2009" />
<meta name="google-site-verification" content="krfhKjdIROn-x0iyR0Wo8UZcX-4Hqgf1sh-x_ONe3c8" />
<meta name="language" content="de_DE" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<meta name="verify-v1" content="Ium0HZSoXjTHngVCTTEjVxmiiRNvdr+kyfZa/QDWmN4=" />
<meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "jusprog.de 1." l gen true for "http://www.pennergame.de/" r (nd 1 ne 1 ni 1 nh 1 vi 1 vg 1 vf 1 vd 1 lb 1 lc 1 oa 1 ob 1 og 1 ca 1 ) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.pennergame.de/" r (n 2 s 0 v 1 l 1))' />
<meta http-equiv="pics-Label" content='(pics-1.1 "http://www.icra.org/pics/vocabularyv03/" comment "jusprog.de 1." l gen true for "http://www.pennergame.de/" r (n 2 s 2 v 2 l 2 oa 2 ob 2 oc 2 od 2 oe 2 of 2 og 2 oh 2 c 3))' />
<meta property="og:title" content="Pennergame - Hamburg" />
<meta property="og:type" content="game" />
<meta property="og:url" content="http://www.pennergame.de"/>
<meta property="og:image" content="http://media.farbflut.de/upload/img/bg-content-13.png" />
<meta property="fb:admins" content="1778453665" />
<meta property="fb:app_id" value="" />
<script src="http://static.pennergame.de/js/pv4/mootools-1.2.4-core-nc.js" type="text/javascript"></script>
<script src="http://static.pennergame.de/js/pv4/mootools-1.2.3.1-more.js" type="text/javascript"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://static.pennergame.de/js/pv4/i18n/i18n-utils.js" type="text/javascript"></script>
<script src="http://static.pennergame.de/js/pv4/i18n/i18n-de_DE.js" type="text/javascript"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script src="http://static.pennergame.de/js/pv4/jquery.lettering-0.6.1.min.js" type="text/javascript"></script>
<style type="text/css" media="screen">
#mobile_button {
display: block;
background-color: #991914;
float: left;
padding: 10px;
border-radius: 10px;
margin-left: 380px;
text-decoration: none;
color: #D1D1D1;
font-weight: bold;
background-image: linear-gradient(bottom, rgb(56,8,0) 0%, rgb(153,32,2) 100%);
background-image: -o-linear-gradient(bottom, rgb(56,8,0) 0%, rgb(153,32,2) 100%);
background-image: -moz-linear-gradient(bottom, rgb(56,8,0) 0%, rgb(153,32,2) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(56,8,0) 0%, rgb(153,32,2) 100%);
background-image: -ms-linear-gradient(bottom, rgb(56,8,0) 0%, rgb(153,32,2) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0, rgb(56,8,0)),
color-stop(1, rgb(153,32,2))
);
}
</style>
<style type="text/css" media="screen">
#shortcut_list {
position: absolute;
top: 0px;
width: 100%;
z-index: 9500;
font-size: 2em;
display: none;
}
#shortcut_list li:first-child {
-webkit-border-top-left-radius: 10px;
-webkit-border-top-right-radius: 10px;
-moz-border-radius-topleft: 10px;
-moz-border-radius-topright: 10px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
}
#shortcut_list li.header {
padding: 1em;
color: #fff;
font-weight: bold;
background-image: linear-gradient(bottom, rgb(71,71,71) 0%, rgb(125,125,125) 100%);
background-image: -o-linear-gradient(bottom, rgb(71,71,71) 0%, rgb(125,125,125) 100%);
background-image: -moz-linear-gradient(bottom, rgb(71,71,71) 0%, rgb(125,125,125) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(71,71,71) 0%, rgb(125,125,125) 100%);
background-image: -ms-linear-gradient(bottom, rgb(71,71,71) 0%, rgb(125,125,125) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0, rgb(71,71,71)),
color-stop(1, rgb(125,125,125))
);
}
#shortcut_list li a {
display: block;
padding: 0.8em;
text-decoration: none;
color: #fff;
background-image: linear-gradient(bottom, rgb(26,26,26) 0%, rgb(59,59,59) 100%);
background-image: -o-linear-gradient(bottom, rgb(26,26,26) 0%, rgb(59,59,59) 100%);
background-image: -moz-linear-gradient(bottom, rgb(26,26,26) 0%, rgb(59,59,59) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(26,26,26) 0%, rgb(59,59,59) 100%);
background-image: -ms-linear-gradient(bottom, rgb(26,26,26) 0%, rgb(59,59,59) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0, rgb(26,26,26)),
color-stop(1, rgb(59,59,59))
);
}
#shortcut_background {
position: fixed;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background-color: #000;
z-index: 9000;
opacity: 0.7;
display: none;
}
#shortcut_list .close {
display: inline-block;
float: right;
margin-top: -5px;
cursor: pointer;
}
</style>
<script language="javascript" type="text/javascript">
// <![CDATA[
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.src = 'http://www.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
})();
// ]]>
</script>
</div>
</div>
<script type='text/javascript'>
<!--// <![CDATA[
OA_show('layer-int');
// ]]> -->
</script>
</body>
</html>
|
|
|
04/29/2013, 20:12
|
#4
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Muss dein Bot viel und oft auslesen? Dann schau dir mal einen richigen Parser an und binde den mit ein. Das ist nicht nur leichter, sondern auch viel flexibler.
Gruß
|
|
|
04/29/2013, 22:50
|
#5
|
elite*gold: 1
Join Date: Jun 2012
Posts: 5,819
Received Thanks: 3,200
|
OMG, nutz den code und den spoiler tag, für sowas bekommt man eig ne warning
|
|
|
04/29/2013, 23:22
|
#6
|
elite*gold: 2932
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
|
@Te du musst bedenken das nicht immer regex einfach zum ziel führt, manchmal ist es auch eine kombination von splits oder von beidem.
Sicherlich kann man für alles gesuchte ein entsprechenden regex ausdruck finden jedoch macht der aufwand nicht immer sinn
|
|
|
04/30/2013, 11:03
|
#7
|
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
|
Das fand ich ganz nett für sowas.
Ansonsten was Tolio schon sagte
Splitte das Ding in kleinere Teile auf, schon allein damit du dir graue Haare ersparst beim Fehlersuchen
|
|
|
04/30/2013, 12:13
|
#8
|
elite*gold: 1
Join Date: Jun 2012
Posts: 5,819
Received Thanks: 3,200
|
PHP Code:
Dim str As String = IO.File.ReadAllText("C:\Users\Heaven\Desktop\test.htm")
Dim iPos As Integer, iEnd As Integer Dim strResult As String strResult = String.Empty iPos = str.IndexOf("<td><img src=" & Chr(34) & "http://static.pennergame.de/img/pv4/icons/attack.jpg" & Chr(34) & "/></td>", 1) iEnd = str.IndexOf("</td>", iPos + 74) If iPos <> -1 AndAlso iEnd <> -1 Then strResult = str.Substring(iPos + 74, iEnd - (iPos + 74)) End If MsgBox((strResult.Split(">")(11) & vbNewLine & strResult.Split(">")(12) & vbNewLine & strResult.Split(">")(13)).Replace("<br /", ""))
str ist dein Quellcode und die msgbox gibt dir deine werte aus
|
|
|
04/30/2013, 14:16
|
#9
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,810
|
PHP Code:
Dim ergebnis As String = html.Substring(html.IndexOf("Es erfordert viel Disziplin und Ausdauer eine Kampfkunst zu erlernen.")).Split({"</td>"}, StringSplitOptions.None)(0).Replace("</a>", "").Replace("</span>", "").Replace("<br />", "").Trim()
Keine Ahnung, wieso ihr immer versuchen wollt RegEx zu benutzen, wenn ihr das eh net kapiert und danach hier im Forum um Hilfe bittet. Gibt doch genug andere Möglichkeiten, die viel simpler sind und genauso gut funktionieren.
|
|
|
04/30/2013, 17:58
|
#10
|
elite*gold: 2049
Join Date: May 2012
Posts: 4,593
Received Thanks: 441
|
Quote:
Originally Posted by Kraizy
PHP Code:
Dim ergebnis As String = html.Substring(html.IndexOf("Es erfordert viel Disziplin und Ausdauer eine Kampfkunst zu erlernen.")).Split({"</td>"}, StringSplitOptions.None)(0).Replace("</a>", "").Replace("</span>", "").Replace("<br />", "").Trim()
Keine Ahnung, wieso ihr immer versuchen wollt RegEx zu benutzen, wenn ihr das eh net kapiert und danach hier im Forum um Hilfe bittet. Gibt doch genug andere Möglichkeiten, die viel simpler sind und genauso gut funktionieren.
|
Danke, klappt perfekt :-)
Allerdings interessiert es mich immernoch, wie ich in RegEx über die Zeilensprünge hinweg suchen kann, hat da jemand ne Lösung?
Und muss ich mit VbCrlf arbeiten oder geht das ohne?
|
|
|
05/01/2013, 02:08
|
#11
|
elite*gold: 0
Join Date: Feb 2010
Posts: 7,221
Received Thanks: 6,758
|
Für Zeilenumbrüche in Texten: \n - \r\n
Probier's doch einfach mal damit, bin mir nicht sicher ob es in Visual Basic genauso ist, aber in C# ist es aufjedenfall so ;-)
|
|
|
05/01/2013, 11:22
|
#12
|
elite*gold: 2932
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
|
ja im regex auch in vb \r\n
|
|
|
05/01/2013, 11:57
|
#13
|
elite*gold: 2049
Join Date: May 2012
Posts: 4,593
Received Thanks: 441
|
Hm ok ich werde es mal testen. Aber nochmal zu der methode, die Kraizy mir nahegebracht hat, wenn ich dann den Rest per Replace entferne, sodass ich nurnoch die Zeit habe, bleiben die Leerzeichen & Zeilenumbrüche im String immernoch bestehen, also so:
Ich habs bereits so versucht:
Code:
Dim ergebnis As String = html.Substring(html.IndexOf("Es erfordert viel Disziplin und Ausdauer eine Kampfkunst zu erlernen.")).Split({"</td>"}, StringSplitOptions.None)(0).Replace("</a>", "").Replace("</span>", "").Replace("<br />", "").Trim()
ergebnis = ergebnis.Replace("Es erfordert viel Disziplin und Ausdauer eine Kampfkunst zu erlernen.", "")
ergebnis = ergebnis.Replace("Nächste Stufe: €5,00", "")
ergebnis = ergebnis.Replace("Dauer: ", "")
ergebnis = ergebnis.Replace("Erhöht ATT um 1", "")
ergebnis = ergebnis.Replace(" ", "")
ergebnis = ergebnis.Replace(vbCr, "")
ergebnis = ergebnis.Replace(vbCrLf, "")
|
|
|
05/01/2013, 12:20
|
#14
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,810
|
Du musst doch nur bei jeder neuen Zeile splitten
PHP Code:
Dim s1 As String = ergebnis.Split(CChar(vbNewLine))(0) //Es erfordert... Dim s2 As String = ergebnis.Split(CChar(vbNewLine))(1) //Erhöht ATT um 1 Dim s3 As String = ergebnis.Split(CChar(vbNewLine))(2) //Nächste Stufe Dim s4 As String = ergebnis.Split(CChar(vbNewLine))(3) //Dauer
|
|
|
05/01/2013, 12:23
|
#15
|
elite*gold: 2049
Join Date: May 2012
Posts: 4,593
Received Thanks: 441
|
Vielen Dank, aber was bewirkt dieses splitten genau?
|
|
|
|
|
Similar Threads
|
[RegEx] Regular Expression Problem
02/23/2013 - General Coding - 5 Replies
ERLEDIGT!
Aloha zusammen,
habe ein kleines Problem mit RegEx. Habe mich bisher leider wenig damit beschäftigt..
Nun weiß ich auch warum... vll kann mir einer von euch helfen...
Hier mal zum Aufbau:
Quelauszug der durchsucht werden muss:
|
[Regex] Problem mit Pattern
02/12/2013 - .NET Languages - 9 Replies
Hallo meine lieben,
habe folgende zwei Probleme
Dort möchte ich per Regex den Namen : johann.goldbaum Dieser ändert sich natürlich also .* ?
Pattern:Dim ra As New Regex("<a class=""fbxWelcomeBoxBlock _8o _8s lfloat"" href=""http:\/\/www.facebook.com\/(?< name>(+))")
Funktioniert nicht.
|
Kleines Problem mit RegEx
09/16/2012 - .NET Languages - 4 Replies
Hey Leute ich habe folgenden Code:
System.Text.RegularExpressions.Regex(RichTextBox1. Text, "Ha.*s", RegexOptions.IgnoreCase)
Die Fehlermeldung lautet jetzt: "Regex ist ein Typ in RegularExpressions und kann nicht als Ausdruck verwendet werden."
Könnt ihr mir mal helfen?
Ich glaub ich steh grade voll auf dem Schlauch...
|
[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();
|
[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 15:58.
|
|