Выделение подстроки regex - C#
Формулировка задачи:
Доброго времени суток С устройств поступают строки
необходимо с помощью регулярных выражений Regex.Matches определить что в этой строке присутствует ключ +CBC: и выделить последние цифры после запятой. Количество цифровых знаков может изменяться от 1 до 3.
Для строки
поиск выполняю так
Работает но как частный случай Если приходит вторая строка условие поиска надо менять
Со второй строки необходимо выделить 4.585V Здесь также количество знаков меняется.
"\r\n+CBC: 0,75\r\n\r\nOK\r\n"
"\r\n+CBC: 0,75,4.585V\r\n\r\nOK\r\n"
"\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(",", ""));Решение задачи: «Выделение подстроки 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();
})