Выделение подстроки regex - C#

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

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

Доброго времени суток С устройств поступают строки
Листинг программы
  1. "\r\n+CBC: 0,75\r\n\r\nOK\r\n"
Листинг программы
  1. "\r\n+CBC: 0,75,4.585V\r\n\r\nOK\r\n"
необходимо с помощью регулярных выражений Regex.Matches определить что в этой строке присутствует ключ +CBC: и выделить последние цифры после запятой. Количество цифровых знаков может изменяться от 1 до 3. Для строки
Листинг программы
  1. "\r\n+CBC: 0,75\r\n\r\nOK\r\n"
поиск выполняю так
Листинг программы
  1. var cbc = Convert.ToInt16(Regex.Matches(Sender.ToString(), @"(\d{1,3})")[1].Value.Replace(",", ""));
Работает но как частный случай Если приходит вторая строка условие поиска надо менять Со второй строки необходимо выделить 4.585V Здесь также количество знаков меняется.

Решение задачи: «Выделение подстроки regex»

textual
Листинг программы
  1.     string[] input =
  2.     {
  3.         "\r\n+CBC: 0,75,4.585V\r\n\r\nOK\r\n",
  4.         "\r\n+CBC: 0,75\r\n\r\nOK\r\n"
  5.     };
  6.    
  7.     string pattern = @"(?<=CBC:\s*).*,(?<last>[^\r\n]*)";
  8.     var regex = new Regex(pattern, RegexOptions.Multiline);
  9.  
  10.     Array.ForEach(input, str =>
  11.     {
  12.         var match = regex.Match(str);
  13.        
  14.         if (match.Success)
  15.         {
  16.             Console.WriteLine($"'{Regex.Escape(str)}' contains 'СВС', value = {match.Groups["last"].Value}");
  17.         }
  18.         else
  19.         {
  20.             Console.WriteLine($"'{Regex.Escape(str)}' doesn't contain 'СВС'");
  21.         }
  22.         Console.WriteLine();
  23.     })

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


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

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

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

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

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

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