我想选择并替换三个字符,比如"STR",除非它们在@符号之后.
我使用带有replace方法的文本缓冲区类.我可以替换这三个字符,但它也会替换三个字符前的字符.
这是我的代码:
static void simpleReplace(Args _args)
{
TextBuffer txtb = new TextBuffer();
txtb.setText(" STR @STR #STR");
txtb.regularExpressions(true);
txtb.replace("[^@]STR", "FOO");
info(txtb.getText());
}
Run Code Online (Sandbox Code Playgroud)
结果是"FOO @STR FOO".
我想要的结果是"FOO @STR #FOO",空格和#完好无损.
我认为问题在于我匹配四个字符但只想替换三个字符.我假设我需要一个非捕获组或一些外观.我在Debuggex中尝试了以下表达式:
[^@](?:(STR))
Run Code Online (Sandbox Code Playgroud)

如果它们不跟随@,这似乎可以工作并选择三个字符,但似乎不受Dynamics AX的支持.我查看了此页面以获得X ++ RegEx支持,但找不到任何可以解决我的问题的语法.
是否可以更改上面的作业以产生此输出:"FOO @STR #FOO".