gpt4 book ai didi

c# - 如何使用正则表达式替换匹配项的周围组?

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:30 25 4
gpt4 key购买 nike

我有以下字符串:

[Element][TOPINCLUDESAMEVALUES:5][ParentElement][ORDERBY:DateAdded]

并想将其转换为:

[Element][TOP:5:WITHTIES][ParentElement][ORDERBY:DateAdded]

因此,[TOPINCLUDESAMEVALUES:5] 转换为 [TOP:5:WITHTIES]

输入字符串可以包含更多[elements]。每个元素都被方括号 [] 包围。例如:

...[element1][element2][TOPINCLUDESAMEVALUES:5]...[element3][element4][TOPINCLUDESAMEVALUES:105][element3]...

因此,我需要将每个 [TOPINCLUDESAMEVALUES:X] 元素转换为 [TOP:X:WITHTIES] 元素。

通常,我会使用 regex replace substitutions 尝试一些组合但我自己做不到。

 string statement = "[Campaign][TOPINCLUDESAMEVALUES:5][InstanceID][GROUPBY:Campaign]";
statement = Regex.Replace(statement, @"(?<=\[TOPINCLUDESAMEVALUES:)[^\]]+(?=\])", "");

谁能告诉我有没有办法进行这种替换?

最佳答案

由于您要用其他内容替换 TOPINCLUDESAMEVALUES 的内容,因此您需要捕获它。您正在使用的后视是非捕获,因此您将无法替换其内容。

下面是你应该如何做到的:

statement = Regex.Replace(
statement
, @"\[TOPINCLUDESAMEVALUES:([^\]]+)\]", "[TOP:$1:WITHTIES]"
);

此表达式将匹配整个 [TOPINCLUDESAMEVALUES:5] 括号部分,并另外捕获 5 作为捕获组号 1。替换值将该组称为 $1,将其内容粘贴到 TOP::WITHTIES 之间。

Demo.

关于c# - 如何使用正则表达式替换匹配项的周围组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31725485/

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