Регулярное выражение с разбивкой на группы - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Нужно составить регулярное выражение для разбора строки. Строка может быть двух видов: 1) часть_1: часть_2 2) часть_1: часть_2;часть_3 часть_1, часть_2 и часть_3 состоят из букв и цифр, часть_2 может к тому же содержать пробелы и знаки препинания. Важно не сопоставление, а разбиение строки на части (либо на две, либо на три в зависимости от входной строки). Как это сделать с помощью одного регулярного выражения? У меня есть вариант "(.+):\\s(.+)(;(.+))?", но он неправильно делит на группы (не разделяет части 2 и 3). Помогите разобраться, пожалуйста.

Решение задачи: «Регулярное выражение с разбивкой на группы»

textual
Листинг программы
string[] lines = {"часть_1: часть_2", "часть_1: часть_2;часть_3"};
foreach (var s in lines)
{
    Match m = Regex.Match(s, @"([^:]+):\s*([^;]+)(;(.+))?");
    if (m.Success)
    {
        string group1 = m.Groups[1].Value;
        string group2 = m.Groups[2].Value;
        string group3 = m.Groups[4].Success ? m.Groups[4].Value : "";
        (new { group1, group2, group3}).Dump();
        
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы