Gibt es einen "wirklich" guten RegExGenerator ?

  • VB.NET

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

    Gibt es einen "wirklich" guten RegExGenerator ?

    Hi @ all,

    da ich jetzt schon seit Stunden am googeln bin und trotzdem nicht weiterkomme, wollte ich euch mal fragen ob Ihr einen guten generator für RegExpattern kennt ?
    meistens hab ich einen laaangen String, ich weis ja auch was darin steht, und von einem kleinen teil davon z.B.

    Quellcode

    1. >Status: preconfirmed (
    möchte ich alles bekommen, was zwischen

    Quellcode

    1. >Status:
    und

    Quellcode

    1. (
    steht

    ich komme ums verrecken nicht dahinter, und versuche daher einen passenden Generator für so etwas zu finden, leider zeigen mir die meisten einfach ergebnisse an die auf

    Quellcode

    1. preconfirmed
    basieren, aber nicht darauf das hier immer etwas anderes stehen kann (ich hoffe was ich meine ist verständlich^^)

    gibt es da einen guten Generator, und wenn nicht, warum nicht ?

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    VB.NET-Quellcode

    1. Dim Webclient As New Net.WebClient
    2. Dim Webdownload As String = Nothing
    3. Dim o As String = Nothing
    4. Try
    5. Webdownload = Webclient.DownloadString("www.meineurl.de")
    6. Catch ex As Exception
    7. End Try
    8. Dim match As MatchCollection = Regex.Matches(Webdownload, ">Status: (.*?) (")
    9. Dim webstring As New List(Of String)
    10. For Each Match As System.Text.RegularExpressions.Match In match
    11. webstring.Add(Match.Value.Replace(">Status: ", "").Replace(" (", ""))
    12. Next
    13. For u = 0 To webstring.Count - 1
    14. o = (webstring.Item(u).ToString)
    15. Next
    16. MsgBox(o)



    Müsste so funktionieren wenn ich kein fehler gemacht habe ungetestet

    Nochmal nacheditiert schreibfehler

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

    Hey, danke schon mal für die Antwort allerdings funktioniert es mit dem Pattern: ">Status: (.*?) (" nicht mit der folgenden Fehlermeldung:

    Zusätzliche Informationen: "Status: (.*?) (" wird analysiert - Nicht genügend )-Zeichen.


    nehme ich " (" weg, und nutze nur: "Status: (.*?)" findet er kein Match. Mit dem bisherigen Pattern : Status: (.*) findet er das Match, aber wieder inkl, dem " ("
    welches in deinem Beispiel ja mit Replace herausgenommen wird, aber soweit ich weiss müsste auch ein Pattern möglich sein, welches das " (" direkt ausschließt.

    Greets
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    jap ^^ hatte grade eine Konversation von exc-jdbi mit einem super tipp


    Hi

    Schau dir die pdf-Datei mal an.

    mycsharp.de/wbb2/thread.php?th…09&hilight=regex+tutorial

    und hier ein super gutes Programm dazu

    mycsharp.de/wbb2/thread.php?threadid=21580

    Freundliche Grüsse

    exc-jdbi


    hab mein Pattern gefunden, das Programm ist nice zum testen =)

    p.S. mein (fast wie ein Smiley aussehendes) Pattern :

    Quellcode

    1. ([^\(]*)
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Das Problem ist, dass die öffnende Klammer ein Sonderzeichen in RegEx ist und deshalb mit einem Backslash versehen werden muss.
    Wann immer ich sowas mache, verwende ich regex101.com/
    Erst mal das einfügen, was Du überhaupt matchen willst:

    Und dann sieht man auch gleich den Fehler. Also erst mal alles escapen, sodass der Text 1:1 erkannt wird:

    Ich arbeite gerne mit benannten Gruppen. Davon kann man auch mehrere verwenden und in .NET sind die sehr einfach rauszufischen. Also als nächstes den variablen Teil in eine benannte Gruppe setzen (hier "Status" genannt).

    Und dann musst du überlegen, woraus der variable Teil bestehen kann. Da Du es mit .* probiert hast, halte ich mich mal daran. Ich verwende auch immer ^ und $ um sicher zu stellen, dass sich der gematchte Teil wirklich über den gesamten String erstreckt.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils