Mi trovo nella situazione di dover costruire una stringa da passare a un programma esterno. Devo usare `Eval Insert` per costruire la stringa, ma quest'ultima deve anche contenere un'espressione regolare che includa il carattere ^.
Ho difficoltà a far sì che JMP (versione 19.1.4) ignori quel carattere nella chiamata Eval Insert. Ecco un esempio:
Str_To_Eval = "Insert_Str";
str = "This is a String containing ^Str_To_Eval^ and it also contains this regex : ^(?!.*_).*";
eval insert(str)
Si verifica il seguente errore:
Inaspettato "?". Forse manca una ")".
Riga 1 Colonna 37: (?!.*_).*►
Anteporre \! al carattere ^ non serve a nulla. Nemmeno racchiuderlo tra \[ ..]\
Posso risolverlo in questo modo:
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);
che produce il risultato che desidero.
Ero curioso di sapere se esiste un altro modo per eseguire l'escape del carattere ^ in modo che Eval Insert() lo ignori?
Utilizza un carattere diverso da ^. Io di solito uso ¤.
Names Default To Here(1);
Eval Insert("Today is ¤As Date(Today())¤", "¤");
Valuta Inserisci(stringa, , , < < )

Grazie! Non posso credere di aver usato JMP per circa 20 anni senza mai accorgermi che Eval Insert() avesse un argomento opzionale per specificare il delimitatore! A volte vale la pena leggere il manuale 