in

Regex

Letzter Beitrag 07-24-2012 22:04 von SadhoW. 20 Antworten.
Seite 1 von 2 (21 Treffer) 1 2 > Weiter
Beiträge sortieren: Zurück Weiter
  • 03-25-2012 10:39

    • SadhoW
    • Top 75 Mitwirkender
    • Registriert am 03-17-2011
    • Beiträge 42

    hi, ich würde gerne einen download link aus lesen von der seite zb. http://www.newgrounds.com/audio/listen/477795. jedoch weis ich nicht recht wie ich das genau anstelle.

     

    seiten code:

    // <![CDATA[
    		(function($) {
    
    			var
    				flashvars = {
    					"filename": "http://audio.ngfiles.com/477000/477795_Music-In-My-Heart-6.mp3", 
    					"length": "193",
    					"artist": "ingmar600",
    					"name": "Music%20In%20My%20Heart%206",
    					"loop": 1,
    					"icon": "http://img.ngfiles.com/defaults/icon-audio.png"
    				},
    				params = {
    					"src": "http://flash.ngfiles.com/audio_player/audioplayer.swf",
    					"flashvars": flashvars,
    					"allowscriptaccess": "always",
    					"wmode": "direct",
    					"allowfullscreen": true,
    					"width": 590,
    					"height": 290,
    					"bgcolor": "#0F0B0C"
    				};
    			
    			
    			if($.flashVersion("11")) {
    				$("#player").flash(params);
    			} else if($.flashVersion("10")) {
    				params.src = "http://flash.ngfiles.com/audio_player/audioplayer_fp10.swf",
    				$("#player").flash(params);
    			} else {
    				$("div#audioplayer").height("auto").html('<audio style="width:590px" controls="controls" autoplay="autoplay" loop="loop"src="http://audio.ngfiles.com/477000/477795_Music-In-My-Heart-6.mp3" type="audio/mp3"></audio>');
    			}
    		})(jQuery);
    
    	// ]]>
    Abgelegt unter:
    • IP-Adresse ist Registriert
  • 03-25-2012 17:30 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2008/10/12/13, VB.NET, C#, Office 2007, Win 7
    • Beiträge 2.459

    AW: Regex

    So geht's:

    Nach dem Herunterladen des Quellcodes muß man sich zunächst mit einem sog. 'Positiven Lookbehind'   (?<=......)  auf   CDATA....filename"= "  positionieren und dann alles lesen was nicht " ist.

    Code-Beispiel:

    ' Projekt:  HTML-Infos gezielt auslesen
    '
    ' Problem:  http://www.vb-magazin.de/forums/forums/p/6279/24786.aspx#24786
    '
    ' Autor:    Peter_Punkt
    '
    ' Version:  01 - 25.03.2012
    
    Imports System.Net
    Imports System.IO
    Imports System.Text.RegularExpressions
    
    Public Class Form1
    
        Const WEBADRESSE As String = "http://www.newgrounds.com/audio/listen/477795"
    
        Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    
            Dim WebClient As WebClient
            Dim Quellcode As String
            Dim Muster As String
            Dim rx As Regex
            Dim Treffer As Match
    
            WebClient = New WebClient()
            Quellcode = WebClient.DownloadString(WEBADRESSE)
    
            Muster = "(?<=\[CDATA\[.*?flashvars.*?filename"": "")([^""]+)"     ' Positives Lookback: Lesen bis " kommt
    
            rx = New Regex(Muster, RegexOptions.IgnoreCase + RegexOptions.Singleline)
            Treffer = rx.Match(Quellcode)
    
            If Treffer.Success Then
                TextBox1.Text = Treffer.Value
            Else
                TextBox1.Text = "Keine Übereinstimmung gefunden!!"
            End If
    
        End Sub
    End Class
    
    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    Abgelegt unter: ,
    • IP-Adresse ist Registriert
  • 03-27-2012 19:23 Antwort zu

    • SadhoW
    • Top 75 Mitwirkender
    • Registriert am 03-17-2011
    • Beiträge 42

    AW: Regex

     Danke geht alles.

     Gibt es irg wo eine seite oder ein tutorial wo man das richtig lernen kann wie man dieses suchmuster macht ?

    • IP-Adresse ist Registriert
  • 03-28-2012 13:07 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2008/10/12/13, VB.NET, C#, Office 2007, Win 7
    • Beiträge 2.459

    AW: Regex

    Ich würde empfehlen mit folgender Webseite zu beginnen: http://msdn.microsoft.com/de-de/library/hs600312.aspx

    Anschließend auf dieser Webseite die Links im Kapitel "Verandte Themen" durcharbeiten.

    Dann auch mal lesen: http://marius-gerum.de/uploads/downloads/regex_tut.pdf

    und  noch durcharbeiten: http://www.sql-und-xml.de/regex/

    und..... Üben, Üben, Üben

    Bitte darauf achten, daß die Beschreibung für VB.NET gilt, da es auch noch andere Varianten gibt.

     

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    Abgelegt unter: ,
    • IP-Adresse ist Registriert
  • 04-16-2012 16:38 Antwort zu

    • SadhoW
    • Top 75 Mitwirkender
    • Registriert am 03-17-2011
    • Beiträge 42

    AW: Regex

     Hi,

    Ich habe jetzt etwas rumprobiert mit regex jedoch bin ich jetzt auf ein problem gestoßen. Das der auszulesenden song nicht immer korekt angezeigt wird. Mal wird der song angezeigt mal nicht.

      Dim webClient As System.Net.WebClient = New System.Net.WebClient()
                Dim MyWebSite As String = webClient.DownloadString("http://www.techno4ever.fm/tracklist/main")
                Debug.WriteLine(MyWebSite)
                MyWebSite = MyWebSite.Replace(vbCr, "").Replace(vbLf, "")           ' Cr und/oder Lf entfernen
                MyWebSite = MyWebSite.Replace("&amp;", "&")
                MyWebSite = MyWebSite.Replace("&auml;", "ä").Replace("&ouml;", "ö").Replace("&uuml;", "ü") ' Umlaute umwandeln
                MyWebSite = MyWebSite.Replace("&Auml;", "Ä").Replace("&Ouml;", "Ö").Replace("&uuml;", "Ü") ' Umlaute umwandeln
                Dim rx As New Regex("(?<=<b\b[^>]*>)(.*?)(?=</b>)", RegexOptions.IgnoreCase + RegexOptions.Multiline)
                Dim Trefferliste As MatchCollection = rx.Matches(MyWebSite)

                If Trefferliste.Count >= 2 Then
                    For Each Treffer As Match In Trefferliste
                        Debug.WriteLine(Treffer)
                    Next
                    Dim a As String = Trefferliste.Item(2).ToString.Trim & "#" & Trefferliste.Item(1).ToString.Trim

                    AddItem(ListView1, "Techno4ever", {"Main", a.Split("#")(1)})

    • IP-Adresse ist Registriert
  • 04-19-2012 12:38 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2008/10/12/13, VB.NET, C#, Office 2007, Win 7
    • Beiträge 2.459

    AW: Regex

    Die von Dir geschilderten Probleme sind nicht in Deinem Code zu suchen, sondern bereits der techno4ever.fm Server macht Probleme.

    Wenn man Glück hat, dann kann man auch in einem Browser (z.B. IE) sehen, daß die Webseite manchmal die Nachricht

         Derzeit ist leider keine Track-History vorhanden.
         Bitte versuchen Sie es zu einem späterem Zeitpunkt erneut.

    bringt. D.h. RegEx in Deinem Code würde keine songs in der TrackList vorfinden!!

    Der betreffende HTML-Code-Ausschnitt (der sonst die Tracklist enthält) sieht dann so aus:

                <div id="main">
                  <div id="main_content" class="">    <div id="tracklist">
            <div class="myt4e_title">
                <span>TRACKLIST <span class="stream_main">MAIN</span> STREAM</span>
            </div>
            <div class="err">Derzeit ist leider keine Track-History vorhanden.<br />Bitte versuchen Sie es zu einem sp&auml;terem Zeitpunkt erneut.</div>
        </div>
                </div> <!--  main_content -->
    		    </div> <!-- main -->
    
    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 04-19-2012 18:01 Antwort zu

    • SadhoW
    • Top 75 Mitwirkender
    • Registriert am 03-17-2011
    • Beiträge 42

    AW: Regex

     Komisch ist blozselbst wenn ein song auf der seite steht wird mir off nur die uhrzeit ausgegeben jedoch nicht der nam. woran kann das liegen ?

    • IP-Adresse ist Registriert
  • 04-19-2012 19:53 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2008/10/12/13, VB.NET, C#, Office 2007, Win 7
    • Beiträge 2.459

    AW: Regex

    Poste doch mal die gesamte If-Schleife bis incl.End If

    Außerdem versuche es mal mit folgendem Code:

    Dim a As String = Trefferliste.Item(2).ToString.Trim & vbTab & Trefferliste.Item(1).ToString.Trim

    AddItem(ListView1, "Techno4ever", {"Main", a.Split(vbTab)(1)})

    Ich vermute, daß ein # im Songtitel stört!

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 04-19-2012 20:29 Antwort zu

    • SadhoW
    • Top 75 Mitwirkender
    • Registriert am 03-17-2011
    • Beiträge 42

    AW: Regex

     Das ist die kommplette if-schleife da kommt nur noch ein try block wo fehler in einen label angezeigt wird.

     Ich hatte es ganz zum anfang ohne # und nur trefferliste.item(2).tostring.trim.

    Ich wollte versuchen halt alles auszulesen und mir daraus dann weiter den song zusortieren.

    Mache ich das mit # dann ist das problem genauso wie wenn ich es ohne machen würde. es wird der song angezeigt oder nur die uhrzeit eig mehr nur die uhrzeit.

     

    • IP-Adresse ist Registriert
  • 04-20-2012 8:15 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2008/10/12/13, VB.NET, C#, Office 2007, Win 7
    • Beiträge 2.459

    AW: Regex

    Werde am Wochenende mal versuchen den Fehler mit einem Testprogramm zu reproduzieren. Melde mich dann wieder

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 04-20-2012 16:44 Antwort zu

    • SadhoW
    • Top 75 Mitwirkender
    • Registriert am 03-17-2011
    • Beiträge 42

    AW: Regex

    Also der code ist bei allen 3

    Dim a As String = Trefferliste.Item(1).ToString.Trim & "#" & Trefferliste.Item(0).ToString.Trim

    Jedoch wird es immer anderes angezeigt es müsste ja alle gleich sein Song#Uhrzeit

    http://www.imagebanana.com/view/y6urgc91/Unbenannt.PNG

    • IP-Adresse ist Registriert
  • 04-20-2012 17:27 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2008/10/12/13, VB.NET, C#, Office 2007, Win 7
    • Beiträge 2.459

    AW: Regex

    In der Tracklist steht die Uhrzeit vor dem Song. Die Indizes der Items beginnen mit 0, d.h. .Item(0), .Item(2), ... enthalten jeweils die Uhrzeit und .Item(1), .Item(3), ... jeweils den Song.

    Daher muß man schreiben:

         Dim a As String = Trefferliste.Item(1).ToString.Trim & "#" & Trefferliste.Item(0).ToString.Trim

    und Du bekommst z.B.

         Willi Herren - Wir Rocken Diese Stadt (Megastylez Remix)#15:32 Uhr

    Außerdem muß Du Dein Muster genauer formulieren, da manchmal vor der Tracklist noch Werbung eingeschoben ist, die ebenfalls mit <b>....</b> eingerahmt ist.

    Ein genaueres Muster wäre:    Muster = "(?<=track_head.*?<b>)(.*?)(?=</b>)"

    Kleine Ursachen, große Wirkung!

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 04-20-2012 18:41 Antwort zu

    • SadhoW
    • Top 75 Mitwirkender
    • Registriert am 03-17-2011
    • Beiträge 42

    AW: Regex

     Danke jetzt wird immer der song angezeig. Glaub da muss ich wohl noch etwas Üben mit regex Geeked

    • IP-Adresse ist Registriert
  • 07-23-2012 20:45 Antwort zu

    • SadhoW
    • Top 75 Mitwirkender
    • Registriert am 03-17-2011
    • Beiträge 42

    AW: Regex

    Hi, ich werde mal diesen alten post verwenden für eine änlich frage.

     Und zwar es geht diese mal um die seite dort habe ich versucht ebenfals den artist und den titel auszulesen jedoch macht mir malwieder das patter probleme.

     "(?<=<div id=(""tx-ffhonair-webradio-onair-title"")[^>]*>)(.*?)(?=</div>)"

    http://webradio.ffh.de/index/wController/Webradio/wAction/showstation/wWebradio/eurodance/wNewquality/hq.html

     

                                    <!-- Artist -->
    				<div style="display: block;" id="tx-ffhonair-webradio-onair-artist">Magic Affair</div>
    				<!-- Title -->
    				<div style="display: block;" id="tx-ffhonair-webradio-onair-title">Give me all your love</div>

     

    • IP-Adresse ist Registriert
  • 07-24-2012 11:36 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2008/10/12/13, VB.NET, C#, Office 2007, Win 7
    • Beiträge 2.459

    AW: Regex

    Eine schwierige Nuß!!!

    Mit   Quellcode = WebClient.DownloadString(WEBADRESSE)   bekommt man im allgemeine den HTML-Quellcode.

    Im vorliegende Fall sind aber im Quellcode Scripts eingebunden, die beim .DownloadString nicht ausgeführt werden und daher stehen z.B. die Artist und Title Angaben nicht im Quellcode sondern es steht nur
         <!-- Artist -->
         <DIV style="opacity: 0.684756;" id="tx-ffhonair-webradio-onair-artist"></DIV><!-- Title -->
         <DIV style="opacity: 0.684756;" id="tx-ffhonair-webradio-onair-title"></DIV><!-- Buy me -->

    Man muß also eine Ladetechnik für den Quellcode verwenden, die die Scripts ausführt und damit den ursprünglichen HTM-Quellcode ergänzt.

    Mit dem Steuerelement WebBrowser von VB.NET kann man zwar den Quellcode laden aber die Musik startet dann sofort.

    Mal sehen ob ich eine Lösung finden kann ??!!

     

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
Seite 1 von 2 (21 Treffer) 1 2 > Weiter