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

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

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

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

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

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

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


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

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

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы