Вам необходимо проверить, содержит ли строка ocean
, и, если да, добавить water
только к этой строке:
var content = "test1\n\nabcdocean123 \n\n\ntest2\ntest3";
var lines = content.Split(new[] { "\n" }, StringSplitOptions.None)
.Select(line => line.Contains("ocean") ? $"{line}water" : line);
return string.Join("\n", lines);
См. Демонстрационную версию C #
Если вам все еще нужно использовать регулярное выражение, замените line.Contains("ocean")
на Regex.IsMatch(line, @"\bocean\b")
или любым другим регулярным выражением, которое вам нужно.Просто отметьте, что \b
является границей слова, и \bocean\b
будет соответствовать только тогда, когда не заключено в символы слова (цифры, буквы или подчеркивания).
Обратите внимание, что вы должны полагаться на разделение новой строкой, не удаляя пустыелинии, и при присоединении к ним вы не потеряете пустых.
Если вы действительно хотите продолжить свое путешествие с помощью регулярных выражений, вы можете использовать
var content = "test1\n\nabcdocean123 \n\n\ntest2\ntest3";
content = Regex.Replace(content, @"ocean.*", "$&water");
// If your line endings are CRLF, use
// content = Regex.Replace(content, @"ocean[^\r\n]*", "$&water");
Console.WriteLine(content);
См. эта демонстрация C #
Здесь ocean.*
соответствует ocean
подстроке и .*
соответствует остальной части строки , а $&
заменяется найденным соответствием, а затем water
добавлено.[^\r\n]
предпочтительнее, если в конце вашей строки может содержаться CR, и если .
соответствует CR, безопаснее использовать [^\r\n]
, любой символ, кроме CR и LF.