Ich muss einen String erstellen, der an ein externes Programm übergeben wird. Dazu verwende ich `Eval Insert`. Der String muss außerdem einen regulären Ausdruck enthalten, der das Zeichen `^` beinhaltet.
Ich habe Schwierigkeiten, JMP (Version 19.1.4) dazu zu bringen, dieses Zeichen im Eval Insert-Aufruf zu ignorieren. Hier ist ein Beispiel:
Str_To_Eval = "Insert_Str";
str = "This is a String containing ^Str_To_Eval^ and it also contains this regex : ^(?!.*_).*";
eval insert(str)
Dies schlägt mit folgendem Fehler fehl:
Unerwartetes „?“. Vielleicht fehlt eine „)“.
Zeile 1 Spalte 37: (?!.*_).*►
Das Voranstellen eines \! vor das ^-Zeichen hilft nicht. Auch das Einschließen in \[ ..]\ bringt keine Besserung.
Ich kann es so lösen:
Str_To_Eval = "Insert_Str";
RegExFragment = "^";
str = "This is a String containing ^Str_To_Eval^ and it also contains this regex : ^RegExFragment^(?!.*_).*";
eval insert(str);
was das gewünschte Ergebnis liefert.
Ich frage mich, ob es eine andere Möglichkeit gibt, ein ^-Zeichen zu maskieren, sodass Eval Insert() es ignoriert?
Verwenden Sie ein anderes Zeichen als ^. Ich verwende normalerweise ¤.
Names Default To Here(1);
Eval Insert("Today is ¤As Date(Today())¤", "¤");
Eval Insert(string, , , < < )

Danke! Ich kann es kaum glauben, dass ich JMP schon fast 20 Jahre benutze und nie bemerkt habe, dass `Eval Insert()` ein optionales Argument zur Angabe des Trennzeichens hat! Manchmal lohnt es sich doch, das Handbuch zu lesen.