При ответе на этот вопрос С# Regex Replace и * было указано, почему проблема существует. При воспроизведении я произвел следующий код:
string s = Regex.Replace(".A.", "\w*", "B");
Console.Write(s);
У этого есть вывод: B.BB.B
Я получаю, что строка длины 0 соответствует совпадению до и после символа ., но почему A заменен на 2 Bs.
Я мог понять B.BBB.B как замену строк нулевой длины с обеих сторон A или B.B.B
Но фактический результат меня смущает - любая помощь оценивается.
Или, как сказал AakashM:
Почему Regex.Matches("A", "\w*").Count равно 2, а не 1 или 3?