如何在使用Regex.Replace方法时找到子字符串?

Inf*_*eus 4 c# regex

我正在使用此代码来替换索引中的所有找到的值:

int i = 0;
input = "FGS1=(B+A*10)+A*10+(C*10.5)";
Regex r = new Regex("([A-Z][A-Z\\d]*)");
bool f = false;
MatchEvaluator me = delegate(Match m)
{
  f = true;
  i++;
  return "i" + i.ToString();
};
do { f = false; input = r.Replace(input, me); } while (f);
//expected result: input == "i1=(i2+i3*10)+i4*10+(i5*10.5)"
Run Code Online (Sandbox Code Playgroud)

但我必须以更复杂的方式做到这一点,因为我必须用已发现的价值做些什么.例如:

MatchEvaluator me = delegate(Match m)
{
  foundValue = /*getting value*/;
  if (foundValue = "A") i--;
  f = true;
  i++;
  return "i" + i.ToString();
};
Run Code Online (Sandbox Code Playgroud)

此代码的预期结果: "i1=(i2+i2*10)+i2*10+(i3*10.5)"

Guf*_*ffa 5

您可以使用Groups匹配对象中的集合来获取匹配的组.第一项是整个匹配,因此第一组的值位于索引1处:

string foundValue = m.Groups[1].Value;
if (foundValue == "A") i--;
Run Code Online (Sandbox Code Playgroud)