Вам повезло, так как .NET поддерживает просмотр с переменной длиной.
Поэтому вы можете использовать два регулярных выражения в последовательности.
Сначала используйте
^<!--(.*)-->\s*$
найти все строки комментариев.Обратная ссылка $1
будет содержать все, что находится между разделителями.Например:
Regex paragraphs = new Regex(@"^<!--(.*)-->\s*$", RegexOptions.Multiline);
Match matchResults = paragraphs.Match(subjectString);
while (matchResults.Success) {
// matched text: matchResults.Value
// match start: matchResults.Index
// match length: matchResults.Length
matchResults = matchResults.NextMatch();
Во-вторых, чтобы найти и манипулировать "собакой" и "лисой" в других строках, вы можете использовать
(?<!^<!--.*)(dog|fox)
Что это регулярное выражение означает "Match dog
или fox
, если строка не начинается с <!--
".Поэтому, если вы хотите заменить их, скажем, на «кошка», используйте
resultString = Regex.Replace(subjectString, "(?<!^<!--.*)(dog|fox)", "cat", RegexOptions.Multiline);