Quelltext per RegEx über mehrere Zeilen auslesen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Quelltext per RegEx über mehrere Zeilen auslesen

    Hallo Zusammen,

    es geht um folgenden Quelltext von einer Homepage:

    Quellcode

    1. <a href="/title/tt0096283/releaseinfo?ref_=tt_ov_inf " title="See all release dates" > 16 April 1988<meta itemprop="datePublished" content="1988-04-16" />
    2. (Japan)
    3. </a> </span>

    Aus diesem möchte ich per RegEx (Japan) auslesen. Dabei ist zu wissen, dass dieser Teil:
    16 April 1988<meta itemprop="datePublished" content="1988-04-16" /> nicht einzigartig ist und mehrfach auf der Homepage vorkommt.

    Somit muss mit See all release dates begonnen werden, um den richtigen Text zu erwischen.

    Aktuell schaffe ich es aber einfach nicht über diese zwei bzw. drei Zeilen, den Text per RegEx zu filtern.

    VB.NET-Quellcode

    1. Dim SuchmusterLand As String = "(?<=See all release dates"" >)(.+content.+>.+<)" '(?<=See all release dates" >)(.+content.+>\n.+<)
    2. Dim TrefferlisteLand As MatchCollection
    3. Dim PosLand As Integer

    VB.NET-Quellcode

    1. rgx = New Regex(SuchmusterLand, RegexOptions.IgnoreCase)
    2. TrefferlisteLand = rgx.Matches(HTMLQuelltext)
    3. If TrefferlisteLand.Count = 0 Then ' Trefferliste enthält keine Treffer
    4. tbLand.BackColor = Color.LightCoral
    5. ElseIf TrefferlisteLand.Count = 1 Then ' Trefferliste enthält genau 1 Treffer
    6. tbLand.Text = TrefferlisteLand.Item(0).ToString
    7. tbLand.BackColor = Color.LawnGreen
    8. Else ' Trefferliste enthält mehr als 1 Treffer
    9. tbLand.BackColor = Color.Red
    10. End If

    Mir ist bekannt das man per \n Zeilenumbrüche in RegEx verarbeiten kann und auch das es RegexOptions.Multiline gibt, jedoch nicht wie diese genau bei meinem Beispiel in Verbindung anzuwenden sind.

    Über etwas Hilfe würde ich mich sehr freuen :)

    MfG, FireEmerald

    (ps.: Folgende Seiten hatte ich schon per Google gefunden, jedoch nichts passendes gefunden: 1, 2, 3, 4, 5 bitte keine weiteren Posten.)

    FireEmerald schrieb:

    Mir ist bekannt das man per \n Zeilenumbrüche in RegEx verarbeiten kann und auch das es RegexOptions.Multiline gibt, jedoch nicht wie diese genau bei meinem Beispiel in Verbindung anzuwenden sind.

    ich weisses auch nicht, aber mit RegexTester sollte sich das rauskriegen lassen.

    ErfinderDesRades schrieb:

    ich weisses auch nicht, aber mit RegexTester sollte sich das rauskriegen lassen.
    Nett gemeint, jedoch wollte ich eigentlich ja nur diesen kleinen Abschnitt filtern, und nicht ein komplettes Programm runterladen, das ich vorne und hinten nicht verstehe, wo ich wieder allein eine Stunde bräuchte um dieses nur ansatzweise zu verstehen.

    Soweit ich das Programm "verstehe" sollte es etwas in diese Richtugn sein: gskinner.com/RegExr/, leider bringt mir das recht wenig bis nichts...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FireEmerald“ ()

    Nimm die Option Singleline, dann sollte es klappen. Dann kann man die \n auch mit . matchen.
    @ErfinderDesRades: Muss diese Eigenwerbung immer sein?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rinecamo“ ()

    Folgendes habe ich jetzt abgeändert:

    VB.NET-Quellcode

    1. Dim SuchmusterLand As String = "See all release dates"" >(.*?)</"
    2. rgx = New Regex(SuchmusterLand, RegexOptions.IgnoreCase And RegexOptions.Singleline)

    Dies sollte doch jetzt eigentlich zumindest fast den kompletten Text finden, macht es aber nicht. :huh:

    Rinecamo schrieb:

    @ErfinderDesRades Muss diese Eigenwerbung immer sein?

    ja, muss sein.
    Mir ist einfach kein anneres Proggi zum Testen von Regex bekannt, was vergleichbares leistet. Sonst würde ich selbstverständlich Fremdwerbung machen.
    ZB grade die Möglichkeit, verschiedene RegexOptions zu testen, ist bei den mir bekannten Online-Regextestern nicht gegeben.

    Und es ist durchaus gut möglich, dass der TE auch in Zukunft mal wieder auf Regex zurückgreifen muß, also von wegen "brauchs nur für eine Stunde".