RegEx - Prüfen ob Pattern in anderem Muster

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RushDen.

    RegEx - Prüfen ob Pattern in anderem Muster

    Hey,

    ich suche eine Möglichkeit, mit einem RegEx-Pattern zu prüfen, ob das Pattern von einem anderen Muster umschlossen wird.
    Beispielsweise soll er "abc" nur dann matchen, wenn es nicht von 2 "-" umschlossen ist (auch mit Zeichen dazwischen, "-12 33 abc hh-" soll also ebenfalls nicht gematched werden).
    Ich frage mich ob das so überhaupt möglich ist. Danke! :)

    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!
    naja, mit einer Lookbehind-/LookAhead-Gruppe kann man bestimmen, was vor oder hinter einem Match liegen muß.
    (?<=.....) bzw. (?=.....)
    so ähnlich.
    gugge Doku von RegexTester oder Regex-Tut

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

    Versuch's mal damit:

    Quellcode

    1. (?<=-.*?)abc(?=.*?-)

    Die Value-Eigenschaft des Matches gibt beim Finden "abc" zurück.
    PS: EDR's Regextester gebrauche ich ständig. Extrem nützlich! :thumbup:
    Okay, ich übertrage das ganze mal auf mein Beispiel, da ich das derzeit wohl nicht ganz hinbekomme.
    Ich habe "Text-Indikatoren" ("a") und "Zahl-Indikatoren" (/2\). Über diese Syntax lässt sich streiten, aber das ist ja nicht
    Teil der Frage. Wenn nun also "Hallo, dies -> /5\ <- ist eine Zahl" vorkommt, dann soll dies als Text gewertet werden, den Zahlen-Ausdruck
    "/5\" soll er dabei nicht finden. Ist das mit LookAhead/Behind möglich? Kommt mir aktuell nicht so vor.

    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!
    Hallo Nikx,
    mit diesem Pattern werden alle Zahlen gefunden, bei denen weder "/" vorangestellt oder "\" hintenangestellt sind:

    Quellcode

    1. (?<=[^\/]+?)[0-9]+?(?=[^\\]+?)
    Hey,
    was genau bringt mir das? Ich möchte ja durchaus Zahlen das dieser: "/3\" Syntax finden.
    Nur eben nicht, falls diese von zwei "" umschlossen sind, dies kann auch 'indirekt' sein.

    "abc /2\ abc" -> Findet /2\ nicht.
    abc /2\ "def" -> Findet /2\.

    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!
    In dem Fall gehst du für jedem Match den String Splitten und die Anzahl """ in jedem der beiden Strings zählen, ist die Anzahl bei beiden gerade (oder = 0), kannst du das ganze als Zahl parsen, ansonsten den Bereich zwischen den beiden nächsten """ als Text exportieren.