Ваш код может быть уменьшен до
string url = "Please ab123456 this is and also bc789456 and also de456789 ";
string[] queryString = Regex.Matches(url,@"\w{2}\d{6}").Cast<Match>().Select(x => x.Value).ToArray();
string finalurl=Regex.Replace(url,@"\w{2}\d{6}", "replace $&");
Console.WriteLine(finalurl); // => Please replace ab123456 this is and also replace bc789456 and also replace de456789
См. онлайн C# демо .
Здесь Regex.Matches(url,@"\w{2}\d{6}").Cast<Match>().Select(x => x.Value).ToArray()
собирает все совпадения в queryString
переменная (если вам нужен массив значений совпадений).
Regex.Replace(url,@"\w{2}\d{6}", "replace $&")
находит все совпадения двухсимвольных символов, за которыми следуют шесть цифр, и добавляет replace
+ пробел перед сопоставленными текстами (примечание $&
обратная ссылка на все значение совпадения).
Если вы планируете еще какие-то манипуляции с найденными совпадениями, рассмотрите возможность использования оценщика совпадений. Скажем, вы где-то определили SomeMethod(string s)
, тогда вы можете использовать
string finalurl=Regex.Replace(url,@"\w{2}\d{6}", m =>
SomeMethod(m.Value);
);