Kleines RegEx Problem

  • VB.NET

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

    Kleines RegEx Problem

    Ich habe einen ca 500 Zeilen langen String und hab nun mittendrin folgende Stelle :

    Quellcode

    1. <table width="100%" border="0" cellspacing="0" cellpadding="0">
    2. <tr>
    3. <td id="userbarbg">
    4. <table width="990" border="0" align="center" cellpadding="0" cellspacing="0">
    5. <tr>
    6. <td id="userbaraxe"><a href="http://www.elitepvpers.com/forum/"><img src="http://cdn.elitepvpers.org/images/userbaraxe.png" width="50" height="28" alt="" /></a></td>
    7. <td id="userbar">
    8. ******************************************
    9. <ul id="userbaritems">
    10. <li>Welcome, <a rel="nofollow" href="http://www.elitepvpers.com/forum/members/4313631-graphicscore.html">Graphicscore</a>.</li>
    11. <li>
    12. <span id="notifications"><a href="http://www.elitepvpers.com/forum/usercp.php">Your Notifications:</a> <strong>1</strong></span>
    13. <script type="text/javascript"> vBmenu.register("notifications"); </script>
    14. </li>
    15. <li><a href="http://www.elitepvpers.com/theblackmarket/premium/">Upgrade to premium</a></li>
    16. <li><a href="http://www.elitepvpers.com/theblackmarket/">elite*gold</a>: <span class="gold">132</span></li>
    17. <li><a rel="nofollow" href="http://www.elitepvpers.com/forum/login.php?do=logout&amp;logouthash=1369679398-91c21cc68243986816d522e9ef6685ee93ff2bfc" onclick="return log_out('Are you sure you want to log out?')">Log Out</a></li>
    18. </ul>
    19. *****************************************
    20. </td>
    21. </tr>
    22. </table>
    23. </td>
    24. </tr>
    25. </table>


    Wenn ich nun den markierten Abschnitt (zwischen den *)herauslesen will ist der RegEx Pattern doch :

    VB.NET-Quellcode

    1. Dim regExbar As New Regex("<td id=""userbar"">(.*?)</td>")
    2. Dim matches As MatchCollection = regExbar.Matches(RegExString)
    3. MsgBox(matches.Count)
    4. For Each Match As Match In matches
    5. MsgBox(Match.ToString)
    6. Next


    Nun leider findet er keine Ergebnisse

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

    Vielleicht gehst Du mal einen anderen Weg: HTML-Parser.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    RegEx prüft normalerweise immer nur in einer Zeile. Die Lösung deines Problems liegt in den RegexOptions, wenn ich mich recht erinnere, war das die RegexOption SingleLine, wenn nicht, einfach durchprobieren ;). Ausserdem würde ich den Pattern an den benötigten Stellen escapen.

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

    Du könntest dir auch mal das ( [VB.NET] WebAnalyzer (Eine Klasse zum Auslesen von HTML-Elementen) ) angucken.
    Die Abfrage für dein Problem wäre dann ...

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Public WithEvents wOne As New WebAnalyzer("http://de.selfhtml.org/html/verweise/anzeige/a_href.htm") 'Public WithEvents Instanz mit Addresse
    4. Private Sub w_Ready() Handles wOne.Ready 'Methode wenn der Quelltext geladen wurde
    5. 'Alle Übereinstimmungen eines <a> wo href=... ist
    6. Dim presults As List(Of String) = wOne.GetElementText("SELECT td WHERE id=userbar", True, WebAnalyzer.SearchOptions.Inline)
    7. MessageBox.Show(presults(0))
    8. End Sub
    9. End Class