Regex.Replace без указателей начала и конца строки имеет очень странные эффекты… Что здесь происходит?

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

10
задан Community 23 May 2017 в 12:27
поделиться