RegEx such Probleme RichTextbox & ListBox

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von shaebich.

    RegEx such Probleme RichTextbox & ListBox

    Guten Tag,
    ich habe mir ein Tutorial über RegEx hier im Forum mal angeschaut jedoch habe ein ein Problem ich will das eine kombination die immer so ausschaut "AAAA-AAAA-AAAA"
    also in der Form aus einer RichTextbox herausgelesen wird und machmal können auch 2 von den kombinationen in der RichTextbox sein.

    Imports System.Text.RegularExpressions
    Public Class Form1

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim Input As String = "Hier steht nur ein sinnloser Text... 08D9-93DO-03OD und hier ist noch mehr sinnloser Text!!"
    3. Dim Res() As String
    4. ListBox1.Items.Clear()
    5. Res = Regex.Split(Input, "\w+([-+.']\w+)*-\w+([-+.']\w+)*-\w+([-+.']\w+)*")
    6. For Each el As String In Res
    7. ListBox1.Items.Add(el.ToString)
    8. Next
    9. End Sub
    10. End Class


    Also ich hätte mir von diesm code jetzt erwartet das er alle Kombinationen aus der RichTextbox herauslest und nacheinander in die
    ListBox einträgt jedoch macht er genau das Gegenteil von dem er schreibt alles andere in die ListBox auser denn Kombinationen.

    Warscheinlich habe ich nur einen kleinen Fehler oder habe was vertauscht aber kann mir wer sagen was ich falsch gemacht habe?

    MfG
    Also der Pattern sollte so funktionieren.

    Probier es mal wie in dem Tutorial hier im Forum.
    Erstelle eine MatchCollection mit allen Matches und die kannst du dann mittels ForEach durchgehen und alle Ergebnisse in deine ListBox eintragen.

    Regex.Split-Methode
    Teilt
    eine Eingabezeichenfolge an den durch ein reguläres Ausdrucksmuster
    definierte Positionen
    in ein Array von Teilzeichenfolgen auf.


    Jetzt sollte dir klar sein wieso alles davor und alles nach deinem Pattern angezeigt wurde!


    VB.NET-Quellcode

    1. Dim matchColl As MatchCollection
    2. Dim match As Match
    3. matchColl = Regex.Matches(Input, "\w+([-+.']\w+)*-\w+([-+.']\w+)*-\w+([-+.']\w+)*")
    4. For Each match In matchColl
    5. ListBox1.Items.Add(match.Value)
    6. Next