Регулярное выражение с разбивкой на группы - 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д