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