Поскольку \\w*?
соответствует как можно меньшему количеству \w
, , включая 0 из них .
Поскольку у вас есть \w*
вместо \w+
, регулярное выражениесоответствует 0 или более \w
.
Поскольку у вас есть ?
для \w*
, наименьшее возможное совпадение для этого регулярного выражения - строка длиной 0, ''.
Поскольку ?
заставляет регулярное выражение сопоставлять как можно меньшее совпадение, только ever соответствует строкам нулевой длины.Он не может соответствовать одному символу A
, потому что это будет более длинное соответствие, чем самое короткое.
Следовательно, все строки 0 длины в .A.
(то есть: ''.''A''.''
, где каждый возможный 0-Строка длины, отмеченная как ''
), заменяется на 'B', давая вам 'BAB'.
Если вы хотите отключить это поведение и заменить хотя бы один \w
, вы можете использовать регулярное выражение \w+?
.Однако, по той же причине, что и раньше, ?
заставляет это заменить только \w
длины один, так что вы также можете использовать регулярное выражение \w
.