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

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

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

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

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

textual
Листинг программы
    string[] input =
    {
        "\r\n+CBC: 0,75,4.585V\r\n\r\nOK\r\n",
        "\r\n+CBC: 0,75\r\n\r\nOK\r\n"
    };
    
    string pattern = @"(?<=CBC:\s*).*,(?<last>[^\r\n]*)";
    var regex = new Regex(pattern, RegexOptions.Multiline);
 
    Array.ForEach(input, str =>
    {
        var match = regex.Match(str);
        
        if (match.Success)
        {
            Console.WriteLine($"'{Regex.Escape(str)}' contains 'СВС', value = {match.Groups["last"].Value}");
        }
        else
        {
            Console.WriteLine($"'{Regex.Escape(str)}' doesn't contain 'СВС'");
        }
        Console.WriteLine();
    })

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


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

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

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