gpt4 book ai didi

regex - 选择三个字符,除非它们跟在 TextBuffer .replace() 的 @ 符号之后

转载 作者:行者123 更新时间:2023-12-01 11:29:13 25 4
gpt4 key购买 nike

我想选择并替换三个字符,比如“STR”,除非它们在 @ 符号之后。

我使用 text buffer class用替换方法。我可以替换这三个字符,但它也替换了三个字符之前的字符。

这是我的代码:

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))

Regular expression visualization

Debuggex Demo

如果这三个字符不跟在 @ 后面,这似乎可以工作并选择三个字符,但似乎不受 Dynamics AX 支持。我看了this page对于 X++ RegEx 支持,但找不到任何可以解决我的问题的语法。

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

最佳答案

在允许的正则表达式语法有限的情况下,我很难想到一个单一的替换解决方案。我有一个解决方案,但它不是最佳解决方案,可能不适用于您的特定情况。

static void simpleReplace(Args _args)
{
TextBuffer txtb = new TextBuffer();

txtb.setText(" STR @STR #STR");
txtb.regularExpressions(true);

txtb.replace("STR", "FOO");
txtb.replace("@FOO", "@STR");
info(txtb.getText());
}

将所有 STR 替换为 FOO,然后将所有 @FOO 替换为 @STR。它应该具有相同的效果,但是根据数据,这可能不适合您。

关于regex - 选择三个字符,除非它们跟在 TextBuffer .replace() 的 @ 符号之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com