[RegEx] Bildlink herausfiltern

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Lukas.

    [RegEx] Bildlink herausfiltern

    Moin,

    ich setze mich gerade mit Regex auseinander, um Bildlinks aus einem Quellcode zu filtern. Hier ist mal ein Beispiel:
    <a href="image.php?id=*" title="Click to view this image"><img src="********/*.jpg" alt="Image *" title="View this image" class="border" />


    Soweit so gut.

    VB.NET-Quellcode

    1. Dim imgregex As New Regex("<img.*?src=""(?<url>.*?)""")
    2. Dim match As String = imgregex.Match(this).Groups("url").ToString()
    3. TextBox1.Text = match


    this enthält den bereits herausgefilterten Bereich des Quelltextes in Form einiger Zeilen im Format von oben. Allerdings scheitere ich am Pattern, denn Links bekomme ich keine zurück. Auch herumprobieren in einem Onlinetester haben mir bisher nicht geholfen.

    Weiß jemand Rat? :S

    mfg,
    Lukas

    Edit:

    VB.NET-Quellcode

    1. Dim imgregex As New Regex("img src="([^"]+)")

    Pattern ist laut Onlinetester richtig, nur wird es mir zurecht angemeckert, da es ja eine Klammer enthält. Wie kriege ich das nun hin?
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Lukas“ ()

    Hey,

    Du hast also mehrere Bilderlinks in deinem String den du Regexen möchtest.


    Wenn du nur eine Sache regexen möchtest, dann kannst du direkt einem String das geregexte Zuweisen sprich so:

    VB.NET-Quellcode

    1. Dim R As String = Regex.Match(DeinString, "img src=""([^""]+)").groups(1).value


    Möchtest du mehrere Bildlinks, so musst du eine sogenannte Matchcollection benutzen.

    VB.NET-Quellcode

    1. Dim M As MatchCollection = Regex.Matches(DeinString, "img src=""([^""]+)")

    Ausgeben kannst du alle Ergebnisse so:

    VB.NET-Quellcode

    1. For each p as match in M
    2. Console.WriteLine(p.groups(1).value)
    3. Next


    Oder einzelnd:

    VB.NET-Quellcode

    1. M(0).groups(1).value wäre das 1. Value
    2. M(1).groups(1).value wäre das 2. Value usw..


    Das letzte value der Matchcollection gibst du so aus:

    VB.NET-Quellcode

    1. M(M.count -1).groups(1).value



    Ich hoffe das reicht für den Anfang, falls noch Fragen bestehen, poste ruhig.
    @Anoth3rB0y:

    Danke, das hat mir geholfen, das ganze mal ein wenig mehr zu verstehen. Wenn ich jetzt noch Pattern selbstständig hinkriege könnte ich glatt behaupten, dass ich es ansatzweise könnte ;)
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.