При ответе на этот вопрос С# 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
?