Вы должны убедиться, что передали опцию RegexOptions.Multiline
в компиляцию регулярного выражения, и разрешите CR до $
привязки конца строки, так как $
в многострочном режиме соответствует только перед символом LF.
Кроме того, @"\r\n"
- это строка из 4 символов, если вам нужен перевод строки CRLF, используйте "\r\n"
, поскольку дословные строковые литералы не поддерживают escape-последовательности строк.
Вот исправление кода:
string secondPattern = @"<navPoint id=""navPoi[^""]+"" playOrder=""[^""]+""><navLabel><text>([^<>\n]+)</text></navLabel><content src=""([^<>\n]+)""/>\r?$";
string secondSubstitution = "<li id=\"NavPoint-#\"><a href=\"$2\">$1</a>\r\n<ol>";
Regex secondRegex = new Regex(secondPattern, RegexOptions.Multiline);
string anotherNavMap = secondRegex.Replace(newNavMap, secondSubstitution);