c# 怎么实现正则表达式查找,并按一定的替换规则进行替换

c# 如何实现正则表达式查找,并按一定的替换规则进行替换
需求是这样的:一段文章,要把所有<span class="char-style-override-4" xml:lang="zh-CN"><a class="footnote-link" href="#footnote-650-45" id="footnote-650-45-backlink">45</a></span>这种格式里面的文字,目的是要把所有650都改成651,然后这45都改成46。同理,下文遇到的<span class="char-style-override-4" xml:lang="zh-CN"><a class="footnote-link" href="#footnote-650-46" id="footnote-650-46-backlink">46</a></span>中的3个46都改成47,以此类推,650呢都改成651,那个进行加1操作。

目前想法是建立一个窗体,用正则表达式把这些格式相同的都给查出来放在一个数组里面,然后固定几位转成数字形式,把650改成651,把那三个位置的数字进行加1操作,再替换到原数组。再替换到原文章。但是不知道代码怎么实现。想法也不知道能不能实现的。到底怎么正则表达式查找,然后650改成651,那三个数字加1操作呢?
------解决方案--------------------
上面那个写错了
下面的正确

 string s = "<a class=\"footnote-link\" href=\"#footnote-650-45\" id=\"footnote-650-45-backlink\">45</a>";
            Regex reg = new Regex("<a\\s+class=\"footnote-link\"\\s+href=\"#footnote-(?<f1>\\d+)-(?<f2>\\d+)\"\\s+id=\"footnote-\\d+\\-\\d+\\-backlink\">\\d+</a>", RegexOptions.IgnoreCase);
            MatchCollection mac = reg.Matches(s);
            foreach (Match m in mac)
            {
                string f1 = m.Groups["f1"].Value;
                string f2 = m.Groups["f2"].Value;
                int _f1 = int.Parse(f1) + 1;
                int _f2 = int.Parse(f2) + 1;
                s = s.Replace("href=\"#footnote-" + f1 + "-" + f2 + "\" id=\"footnote-" + f1 + "-" + f2 + "-backlink\">" + f2 + "</a>", "href=\"#footnote-" + _f1 + "-" + _f2 + "\" id=\"footnote-" + _f1+ "-" + _f2 + "-backlink\">" + _f2 + "</a>");
            }