HTML Quelltext <div> Blöcke über Regex splitten

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von *alliance.

    HTML Quelltext <div> Blöcke über Regex splitten

    Hallo,

    ich versuche bestimmte <div> Blöcke aus einem HTML Quelltext heraus zu parsen. Die Blöcke sehen wie folgt aus:

    HTML-Quellcode

    1. <div data-id="11" data-type="11" class="slot slot-11 slot-align-right item-quality-4" style=" top: 290px; right: 0px;">
    2. <div class="slot-inner">
    3. <div class="slot-contents">
    4. // Ab hier
    5. <a href="/item/90859" class="item" data-item="e=4360&amp;re=138&amp;s=166291392&amp;u=445"><img src="http://media.server/icons/56/inv.jpg" alt="" /><span class="frame"></span></a>
    6. <div class="details">
    7. <span class="name-shadow">Objektname vorhanden</span>
    8. <span class="name color-q4">
    9. <a href="/item/90859" data-item="e=4360&amp;re=138&amp;s=166291392&amp;u=445">Objektname vorhanden</a>
    10. </span>
    11. <span class="enchant-shadow">
    12. Objektname vorhanden
    13. </span>
    14. <div class="enchant color-q2">
    15. <span class="tip" data-sp="103462">Objektname vorhanden</span>
    16. </div>
    17. <span class="zlevel">489</span>
    18. </div>
    19. // Bis hier
    20. </div>
    21. </div>
    22. </div>


    Die Blöcke lassen sich hauptsächlich durch "<div data-id="11" data-type="11"" indentifizieren, wobei natürlich die id unterschiedlich ist. Zur Weiterverarbeitung durch mein Programm würde mir als Result eines Regex der markierte Bereich genügen. Optimal wäre es, wenn ich eine Liste mit allen Matches bekommen würde. Ich habe bereits versucht mir die Grundlagen über die Regex Funktion anzueignen, jedoch halfen mir da selbst ähnliche Lösungsansätze nicht weiter.

    Vielen Dank im Voraus!
    Was genau willst du am Ende herausbekommen?
    Wird aus dem Text nicht so ganz klar, meiner Meinung nach jedenfalls nicht :)

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    Nikx schrieb:

    Was genau willst du am Ende herausbekommen?
    Wird aus dem Text nicht so ganz klar, meiner Meinung nach jedenfalls nicht :)

    Grüße

    Diesen Teil:

    HTML-Quellcode

    1. // Ab hier
    2. <a href="/item/90859" class="item" data-item="e=4360&amp;re=138&amp;s=166291392&amp;u=445"><img src="http://media.server/icons/56/inv.jpg" alt="" /><span class="frame"></span></a>
    3. <div class="details">
    4. <span class="name-shadow">Objektname vorhanden</span>
    5. <span class="name color-q4">
    6. <a href="/item/90859" data-item="e=4360&amp;re=138&amp;s=166291392&amp;u=445">Objektname vorhanden</a>
    7. </span>
    8. <span class="enchant-shadow">
    9. Objektname vorhanden
    10. </span>
    11. <div class="enchant color-q2">
    12. <span class="tip" data-sp="103462">Objektname vorhanden</span>
    13. </div>
    14. <span class="zlevel">489</span>
    15. </div>
    16. // Bis hier
    Dafür kann man sich eine einfache Funktion erstellen:

    VB.NET-Quellcode

    1. Private Function GetBetween(ByVal Input As String, ByVal StartString As String, ByVal EndString As String) As MatchCollection
    2. Return Regex.Matches(Input, Regex.Escape(StartString) & "(?<data>.*?)" & Regex.Escape(EndString))
    3. End Function


    Die Funktion gibt dir eine MatchCollection zurück, die du mit der Klasse: Match abrufen kannst. Beispiel(For Each _Match As Match in GetBetween(Input,StartString,EndString) und so weiter...

    Mfg
    Das Vollzitat war unnötig, ich weiß schon was ich geschrieben habe.
    Entfern es bitte, bevor sich ein Mod die Arbeit machen muss ;)

    //Edit: Fail, dachte irgendwie wird sind bei PHP.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    Monte schrieb:

    Die Funktion gibt dir eine MatchCollection zurück, die du mit der Klasse: Match abrufen kannst. Beispiel(For Each _Match As Match in GetBetween(Input,StartString,EndString) und so weiter...

    Mfg
    Was übergebe ich denn als Start/End-String? Bei "<div class=""slot-contents"">" und "</div>" erhalte ich leider keine Ergebnisse.

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