Kleines RegEx Problem

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Lightning.

    Kleines RegEx Problem

    Hallo,

    ich habe ein kleines RegEx Problem bei folgender Abfrage:

    VB.NET-Quellcode

    1. Dim InputString As String = " TasdfaFA/SF*G/*12*\/*45*\2sdfd ewr adfg s/*ABC123_41f*\ adsf ewq54/*AB23_41f*\aFqwfD"
    2. Dim matches As MatchCollection = Regex.Matches(InputString, "\/\*+([^\*\\]+)")



    Der Filter wurde Online auf regex101.com getestet, dort werden mir folgende Matches zurückgegeben:
    MATCH 1
    1.[16-18]`12`
    MATCH 2
    1.[22-24]`45`
    MATCH 3
    1.[44-54]`ABC123_41f`
    MATCH 4
    1.[69-77]`AB23_41f`


    Wenn ich das in meinem Programm ausführe bekomme ich folgende Matches:
    MATCH 1: '/*12'
    MATCH 2: '/*45'
    MATCH 3. '/*ABC123_41f'
    MATCH 4. '/*AB23_41f'


    Wo liegt hier das Problem?
    Ich würde gerne das gleiche Ergebnis haben wie im Online Tool, sprich die Zeichen zwischen meinen ("/*" "*\") Start- und Stoppzeichen.

    Gruß
    Stefan
    Das Online-Tool irrt sich nicht. @ErfinderDesRades
    Es gibt nur verschiedene Interpreter für RegEx, RegEx101 nutzt standardmäßig PHP.
    Unabhängig davon zeigt es bei "Matches" nur die Groups an.

    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!
    IMO ist Regex eine definierte Sprache mit gottlob nicht beliebig vielen Dialekten.
    Und dank deiner Zusatzinfo passen die unterschiedlichen Ergebnisse auch wieder zusammen.

    Es liegt hier also nur die Verwechslung von Match und Group vor. Was bei regex101 als "Match" bezeichnet wird, ist in wirklichkeit keiner, sondern ist nur die zweite Group eines Matches.

    Zumindest nach den Begrifflichkeiten des .Net-Frameworks - wenn die bei regex101 andere Begrifflichkeiten verwenden, kann ich da nix für.