using System;
using System.Text;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var s = "abbdabab";
var idx = 1; // First = 1, Second = 2
var search = "ab";
var repl = "x";
var pat = new Regex($@"(?s)((?:{search}.*?){{{idx-1}}}.*?){search}"); // ((?:ab.*?){0}.*?)ab
Console.WriteLine(pat.Replace(s, $"${{1}}{repl}", 1));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dDsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CnVzaW5nIFN5c3RlbS5JTzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKICAgIAl2YXIgcyA9ICJhYmJkYWJhYiI7CiAgICAJdmFyIGlkeCA9IDE7IC8vIEZpcnN0ID0gMSwgU2Vjb25kID0gMgogICAgCXZhciBzZWFyY2ggPSAiYWIiOwogICAgCXZhciByZXBsID0gIngiOwogICAgCXZhciBwYXQgPSBuZXcgUmVnZXgoJEAiKD9zKSgoPzp7c2VhcmNofS4qPyl7e3tpZHgtMX19fS4qPyl7c2VhcmNofSIpOyAvLyAoKD86YWIuKj8pezB9Lio/KWFiCgkJQ29uc29sZS5Xcml0ZUxpbmUocGF0LlJlcGxhY2UocywgJCIke3sxfX17cmVwbH0iLCAxKSk7Cgl9Cn0K