外部プログラムに渡す文字列を作成する必要がある状況です。文字列の作成には Eval Insert 関数を使用する必要があるのですが、その文字列には ^ 文字を含む正規表現も含まれている必要があります。
JMP(バージョン19.1.4)でEval Insert呼び出し内の特定の文字を無視させるのに苦労しています。以下にサンプルを示します。
Str_To_Eval = "Insert_Str";
str = "This is a String containing ^Str_To_Eval^ and it also contains this regex : ^(?!.*_).*";
eval insert(str)
これは次のエラーで失敗します。
予期せぬ「?」。おそらく「)」が抜けているのでしょう。
1行目37列目: (?!.*_).*►
^ 文字の前に \! を付けても効果はありません。また、\[ ..]\ で囲んでも効果はありません。
私はこれを次のように解決できます。
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);
これは私が望む出力結果をもたらします。
Eval Insert() が ^ 文字を無視するように、^ 文字をエスケープする他の方法があるかどうか気になっていました。
^ 以外の文字を使用してください。私は通常 ¤ を使用します。
Names Default To Here(1);
Eval Insert("Today is ¤As Date(Today())¤", "¤");
Eval Insert(string, 、 、< < )

ありがとうございます!20年近くJMPを使っているのに、Eval Insert()に区切り文字を指定するオプション引数があることに全く気づかなかったなんて信じられません!マニュアルを読むのはやはり大切ですね 