Regex Problem

  • VB.NET

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

    Regex Problem

    Guten Tag
    Ich habe folgenden Code:

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.IO
    3. Imports System.Text.RegularExpressions
    4. Public Class Form1
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. WebBrowser1.Navigate(TextBox1.Text & "/counter.php?art=tag")
    7. Dim text As String = WebBrowser1.DocumentText
    8. Dim pattern As String = "^\D$"
    9. Dim regex As Regex = New Regex(pattern, RegexOptions.IgnoreCase Or RegexOptions.Singleline)
    10. Dim match As Match = regex.Match(text)
    11. If (match.Success) Then
    12. Dim ermittelt As String = match.Groups(1).Value
    13. Label2.Text = "Heute waren auf der Seite" + ermittelt + "Besucher!"
    14. End If
    15. End Sub
    16. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    17. End Sub
    18. End Class

    Ich will damit eigentlich alle nicht zahlen entfernen aber es klappt leider nicht.
    Könnte einer mir helfen
    achja auf der Seite steht :

    Quellcode

    1. document.write('0');

    Ich will nur die Zahl anzeigen
    Geht dass?
    Mfg
    Confix
    Hallöchen,


    Ich will nur die Zahl anzeigen
    Geht dass?


    Ja, das geht:

    Du hast als "Pattern" folgendes definiert:

    VB.NET-Quellcode

    1. Dim pattern As String = "^\D$"


    Das ist natürlich "schmarn": Du suchst nach einer "Nicht-Zahl" (\D) die vom Anfang des Dokuments (^) bis zum ENDE des Dokuments ($) vorkommen soll, und KEINMAL wiederholt werden darf.
    Dein Pattern würde also nur passen, wenn der Sourcecode einen einzigen Buchstaben enthält ....

    Ferner greifst du mittels

    VB.NET-Quellcode

    1. Dim ermittelt As String = match.Groups(1).Value


    auf die erste Matchgroup zu - aber du hast gar keine definiert: Im "Pattern" erstellst du matchgroups, indem du den "relevanten" Teil einklammest ( ) .

    Quellcode

    1. document.write('0');


    Ist DAS die GANZE Seite?

    Dann wird die Zahl also per JavaScript "dynamisch" geschrieben?

    Das korrekte Pattern wäre dann:

    VB.NET-Quellcode

    1. Dim pattern As String = "^document\.write\('(\d+)'\);$"


    (Die eigentlichen Klammern müssen auskommentiert werden, und die Matchgroup soll ja nur auf die Zahl zutreffen (\d), welche aber ein- oder mehrmal vorkommen kann (+) )
    danke für den aufklärenden Post ^^
    da kennt sich wohl wer mit RegEx aus xD
    danke jjetzt bin ich auch besser durchgestiegen