我想选择并替换三个字符,比如“STR”,除非它们在 @ 符号之后。
我使用带有替换方法的文本缓冲区类。我可以替换这三个字符,但它也替换了三个字符之前的字符。
这是我的代码:
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”,空格和# 完好无损。
我认为问题在于我匹配四个字符但只想替换三个。我假设我需要一个非捕获组或一些环顾四周。我在 Debuggex 中尝试了以下表达式:
[^@](?:(STR))
这似乎可以工作并选择三个字符,如果它们不跟随 @,但 Dynamics AX 似乎不支持。我查看了此页面以获取 X++ RegEx 支持,但找不到任何可以解决我的问题的语法。
是否可以更改上述作业以产生以下输出:“ FOO @STR #FOO”。