Вывод слов разделенных символами с помощью Regex

У меня есть текст и мне необходимо выделить и записать слова, разделённые символами «_.,;:\n\t!?». Я знаю, что это можно сделать с помощью Regex, но не могу предположить, как должен выглядеть подобный паттерн? Кто нибудь может помочь мне с этим на С#?


Ответы (1 шт):

Автор решения: Antosha

Проще всего это сделать, используя метод String.Split. В примере ниже я добавил в список разделителей отсутствующие в тексте вопроса пробел и \r:

string text =
@"Зима!.. Крестьянин, торжествуя,
На дровнях обновляет путь;
Его лошадка, снег почуя,
Плетётся рысью как-нибудь";

var separators = new char[] { ' ', '_', '.', ',', ';', ':', '\r', '\n', '\t', '!', '?' };
string[] words = text.Split(separators, StringSplitOptions.RemoveEmptyEntries);

Console.OutputEncoding = Encoding.UTF8;
foreach (string word in words)
    Console.WriteLine(word);

Выдача:

Зима
Крестьянин
торжествуя
На
дровнях
обновляет
путь
Его
лошадка
снег
почуя
Плетётся
рысью
как-нибудь

Если всё же требуется использовать регулярное выражение:

foreach (Match match in Regex.Matches(text, @"[^ _.,;:\r\n\t!?]+"))
    Console.WriteLine(match);
→ Ссылка