Pattern für $variable

  • VB.NET

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

    Pattern für $variable

    Moin,

    Ich bin gerade am erstellen eines Syntax Highlighters. So nun brauche ich für php einen patter für eine $variable Variable. Nun ist es aber so das die Variable durch ein leerzeichen, ein Semiklon oder einen . getrennt wird.

    Ich hatte einen pattern im Kopf aber ob der geht

    VB.NET-Quellcode

    1. Dim pattern as String = "/$.*/. | ; | /s"


    würde dieser funktionieren.

    Grüße Andy
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    ja, der funktioniert nicht ;) wenn ich nur

    VB.NET-Quellcode

    1. Dim pattern As String = "$.*"
    2. Dim mc As MatchCollection = Regex.Matches(Me.RichTextBox1.Text, pattern)
    3. MessageBox.Show(mc.Count)


    dann geht es, aber

    VB.NET-Quellcode

    1. Dim pattern As String = "$.*;"
    2. Dim mc As MatchCollection = Regex.Matches(Me.RichTextBox1.Text, pattern)
    3. MessageBox.Show(mc.Count)


    geht wiederum nicht ??
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    ja, kann es mal so versuchen moment ;) So, der Patter funktioniert auch nicht. Mein bisheriger ist so

    VB.NET-Quellcode

    1. Sim Str As String = "$Hallo;"
    2. Dim pattern As String = "$/.*;"
    3. Dim mc as MatchCollection = RegEx.Matches(Str, pattern)
    4. MessageBox.Show(mc.count)


    So ich Teile mal den Pattern auf

    Mit $ begint ja der String, nun sollen mit Unbekannt Viele Zeichen Vorkommen bis dann ein Semiklon kommt ;
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

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

    Hi,

    php.net meint folgendes:

    \$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

    Das heißt nur das kann die richtige Antwort sein ;) Siehe auf dieser Seite


    EDIT:
    Mir ist in deinem ersten Posting noch was aufgefallen. Du versuchst offenbar mit dem Singleline-Modifier zu arbeiten. Allerdings verwechselst du hier PHP mit VisualBasic. In VisualBasic wird der Modifier als drittes Argument an RegEx.Matches übergeben, das bedeutet:

    VB.NET-Quellcode

    1. Dim mc As MatchCollection = Regex.Matches(Me.RichTextBox1.Text, pattern, RegExOptions.Singleline)


    Und das "/" am Anfang und das "/s" am Ende deines Patterns lässt du weg.


    Link :thumbup:
    Hello World

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

    Nein, schau mal. Das was ich eben geschrieben hab, den Pattern (wie er auch auf php.net steht) den sollst du auch bei dir als Pattern nehmen. Genauso wie es dort steht, also:

    VB.NET-Quellcode

    1. Dim mc As MatchCollection = Regex.Matches(Me.RichTextBox1.Text, "\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*", RegExOptions.SingleLine)




    Link :thumbup:
    Hello World

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

    Hi,

    danke für euere hilfe, der Pattern \$(.*?[; |\. |\s | \n]) funktioniert auch

    Okay, mag sein dass er für deine derzeitigen Zwecke genügt. Aber früher oder später wirst du damit Probleme bekommen.
    Denn:
    - Was wenn hinter oder vor den von dir angegebenen Zeichen keine Leerzeichen stehen?
    - Du gibst an, dass Leerzeichen und auch sonst alle beliebigen Zeichen für Variablennamen zulässig sind. Dem ist aber nicht so.

    Ich würde den von php.net vorgeschlagenen Pattern verwenden, der ist allgemeingültig. Die schlagen den nicht umsonst vor.

    Super Tutorial zu Regex

    Danke :)


    Link :thumbup:
    Hello World