Tengo una situación en la que necesito construir una cadena que se pasará a un programa externo. Necesito usar Eval Insert para construir la cadena, pero esta también debe contener una expresión regular que incluya el carácter ^.
Tengo problemas para que JMP (versión 19.1.4) ignore ese carácter en la llamada a Eval Insert. Aquí hay un ejemplo:
Str_To_Eval = "Insert_Str";
str = "This is a String containing ^Str_To_Eval^ and it also contains this regex : ^(?!.*_).*";
eval insert(str)
Esto falla con el error:
¿"?" inesperado. Quizás falte un ")".
Línea 1 Columna 37: (?!.*_).*►
Anteponer \! al carácter ^ no ayuda. Tampoco ayuda encerrarlo entre \[ ..]\
Puedo resolverlo así:
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);
lo cual me da el resultado que quiero.
Tenía curiosidad por saber si hay alguna otra forma de escapar un carácter ^ para que Eval Insert() lo ignore.
Usa un carácter diferente a ^. Yo suelo usar ¤.
Names Default To Here(1);
Eval Insert("Today is ¤As Date(Today())¤", "¤");
Eval Insertar(cadena, , , < < )

¡Gracias! No puedo creer que haya estado usando JMP durante casi dos décadas y nunca me diera cuenta de que Eval Insert() tenía un argumento opcional para especificar el delimitador. A veces vale la pena leer el manual 