C#正则表达式在“ $ 1”之后附加数字

时间:2019-01-01 07:04:03

标签: c# regex

extern const BP_UINT8 g_SysMapDis_<DIST_N>[];

我想用'0'或'1'替换'DIST_N',例如:

extern const BP_UINT8 g_SysMapDis_0[];

所以我做这样的事情

    Regex REGEX_CODE_BLOCK_DIST_N = new Regex(@"(.+)(<DIST_N>)(.+)");
    int n = 0;
    string codeBlock = "extern const BP_UINT8 g_SysMapDis_<DIST_N>[];";
    string ret += REGEX_CODE_BLOCK_DIST_N.Replace(codeBlock, "$1" + n + "$3");

我只有这个

$10[];// should be "extern const BP_UINT8 g_SysMapDis_0[];"

那么如何在“ $ 1”之后附加数字?

2 个答案:

答案 0 :(得分:3)

在这种简单情况下,您可以使用字符串替换而不是正则表达式:

string codeBlock = "extern const BP_UINT8 g_SysMapDis_<DIST_N>[];";
string ret = codeBlock.Replace("<DIST_N>", "0");

具体而言,您的正则表达式替换字符串为"$1" + n,其值为"$10"-因此最终找到了第10个 组。解决方案是改用"${1}0",将组与后面的"0"分开。例如:

var s = Regex.Replace("123abc",@"(.)","${1}0");

另请参阅:

答案 1 :(得分:2)

您的正则表达式必须紧随其后,因为这是您要替换的字符串。

"(<DIST_N>)"

完整代码

Regex REGEX_CODE_BLOCK_DIST_N = new Regex(@"(<DIST_N>)");
int n = 0;
string codeBlock = "extern const BP_UINT8 g_SysMapDis_<DIST_N>[];";
string ret = REGEX_CODE_BLOCK_DIST_N.Replace(codeBlock,  n.ToString() );

输出

extern const BP_UINT8 g_SysMapDis_0[];

其他评论

请注意,您可以使用更简单的字符串。在这种情况下,请替换为Regex。

string ret = codeBlock.Replace("<DIST_N>",  n.ToString());