То же поведение, что и
Regex.Replace("", "\w*", "B")
приводит к B
Regex.Replace("A", "\w*", "B")
приводит к BB
См. здесь на Regexr
Для строки ".A."\w*
соответствует перед первой точкой - пустой строке, затем по «A», после «A» - пустой строке и после последней точки - пустой строке.
Объяснение
Вы можете вспомнить схему, в которой есть символы, \w*
съел "A", следующий символ - точка, поэтому это совпадение завершено и заменено.Но начальная позиция для продолжения сопоставления с образцом все еще находится между точкой A и точкой.Точка не может быть сопоставлена, поэтому она соответствует пустой строке перед точкой, но затем эта позиция выполняется, и следующая начальная позиция находится после точки.