Это меня крайне сбило с толку. Почему я получаю повторяющиеся строки замены в следующем коде:
static void Main(string[] args)
{
String input = "test";
String pattern = ".*";
String replacement = "replace";
Console.WriteLine(Regex.Replace(input, pattern, replacement));
Console.Read();
}
Это выводит на консоль:
replacereplace
Я понимаю, что регулярное выражение получает странные совпадающие символы конечной строки, но их не должно быть. Я также понимаю, что шаблон не может совпадать ни с чем, но ясно, что ввод - это не ничто. Это происходит в .Net 3.5 и 4.0, и я получаю то же самое с SingleLine и MultiLine.
Я знаю, что есть несколько альтернатив, которые сделают то, что я ожидаю, но мне больше интересно, какое другое совпадение * считает своим выводом.