@記号の後にない限り、「STR」などの3文字を選択して置き換えたいと思います。
replace メソッドでテキスト バッファー クラスを使用します。3 文字を置換できますが、3 文字の前の文字も置換されます。
これは私のコードです:
static void simpleReplace(Args _args)
{
TextBuffer txtb = new TextBuffer();
txtb.setText(" STR @STR #STR");
txtb.regularExpressions(true);
txtb.replace("[^@]STR", "FOO");
info(txtb.getText());
}
結果は「FOO @STR FOO」です。
私が望む結果は、" FOO @STR #FOO" で、スペースと # はそのままです。
問題は、4 つの文字を一致させているが、3 つだけを置き換えたいということだと思います。非キャプチャ グループまたはいくつかのルックアラウンドが必要だと思います。Debuggex で次の式を試しました。
[^@](?:(STR))
これは機能しているようで、@ の後に 3 文字が続く場合は選択されますが、Dynamics AX ではサポートされていないようです。X++ RegEx サポートについてこのページを見ましたが、問題を解決する構文が見つかりませんでした。
上記のジョブを変更して、「 FOO @STR #FOO」という出力が得られるようにすることは可能ですか?