小编Tin*_*ver的帖子

选择三个字符,除非它们遵循TextBuffer的@符号.replace()

我想选择并替换三个字符,比如"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)

正则表达式可视化

Debuggex演示

如果它们不跟随@,这似乎可以工作并选择三个字符,但似乎不受Dynamics AX的支持.我查看了此页面以获得X ++ RegEx支持,但找不到任何可以解决我的问题的语法.

是否可以更改上面的作业以产生此输出:"FOO @STR #FOO".

regex string x++ axapta dynamics-ax-2012-r3

3
推荐指数
1
解决办法
279
查看次数

标签 统计

axapta ×1

dynamics-ax-2012-r3 ×1

regex ×1

string ×1

x++ ×1