Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpRgMl 18 of 509 menu
◀ ▶

Многострочность в регулярках C#

Регулярки при работе с многострочными строками имеют свои особенности. Разберём их на примере текста с обычными символами и переводами строк:

string txt = """ 111 222 333 444 """; Console.WriteLine(txt);

Символы перевода строки можно заменить шаблоном "'\n'" (в verbatim-строке записывают как @"\n"):

using System.Text.RegularExpressions; string txt = """ 111 222 333 444 """; string res = Regex.Replace(txt, @"\n", "! "); Console.WriteLine(res);

Табуляцию ловят шаблоном "'\t'". Возьмём строку, где числа разделены табами:

using System.Text.RegularExpressions; string txt = "111\t222\t333\t444"; string res = Regex.Replace(txt, @"\t", "!"); Console.WriteLine(res);

Команда "'.'" для многострочной строки не захватывает символ перевода строки:

using System.Text.RegularExpressions; string txt = """ aaa bbbb ccc """; string res = Regex.Replace(txt, @".", "!"); Console.WriteLine(res);

Чтобы учесть и пробельные символы, и переводы строк, используют класс [\s\S]:

using System.Text.RegularExpressions; string txt = """ aaa bbbb """; string res = Regex.Replace(txt, @"[\s\S]", "!"); Console.WriteLine(res);

Якорь "'$'" без RegexOptions.Multiline совпадает только с концом всей строки:

using System.Text.RegularExpressions; string txt = """ 111 222 333 444 """; string res = Regex.Replace(txt, @"$", "!"); Console.WriteLine(res);

С флагом Multiline символ "'$'" работает в конце каждой строки:

using System.Text.RegularExpressions; string txt = """ 111 222 333 444 """; string res = Regex.Replace(txt, @"$", "!", RegexOptions.Multiline); Console.WriteLine(res);

Дан четырёхстрочный список городов:

string txt = """ rome oslo lima kyoto """;

Напишите регулярку, которая поставит восклицательный знак в конце каждой строки списка, и выведите результат.

Дан текст из четырёх коротких строк:

string txt = """ alpha beta gamma delta """;

Добавьте символ "'!'" и табуляцию перед каждой строкой и выведите результат.

Дан блок из четырёх коротких строк:

string txt = """ one two three four """;

Обрамите весь блок восклицательными знаками: отдельный "'!'" перед первой и после последней строки, остальные строки не меняйте. Выведите итог.

Дан журнал из четырёх строк с метками уровня:

string txt = """ info: start warn: disk info: done err: timeout """;

Замените только переводы строк на "'; '", чтобы получить одну строку журнала, и выведите её.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить