Как правильно работать с regular expressions Groups с#

275
16 марта 2017, 19:41

Имеется некоторое выражение (Например: 50,41+30,42 либо просто 50,41), то есть 2 числа (могут быть дробные/целые, положительные/отрицательные) и знак между ними (+/-), либо 1 число. Мне нужно вытащить числа и знак из этой строки и записать в разные переменные, пытаюсь делать это через группы, но что-то не получается:

string pattern = @"(-*[0-9]+,?[0-9]*)([\+\-]*)([0-9]+,?[0-9]*)";
Regex regex = new Regex(pattern);
Match match = regex.Match(f);
MessageBox.Show(match.Groups[1].Value);
MessageBox.Show(match.Groups[2].Value);
MessageBox.Show(match.Groups[3].Value);

Подскажите в чем проблема, спасибо.

Answer 1

Попробуйте этот шаблон:

(-?[\d]+(?:[,|\.][\d]+)?)(?:[ ]*([+|-|\*|/])[ ]*(-?[\d]+(?:[,|\.][\d]+)?))?

Вот такие строки захватывает (проверено здесь):

 -50,41 + 30,42
 50 + 30
 -5 * -1
 4/0.02
 40
 57,3
 -50.05
READ ALSO
сохранить данные в тхт не построчно

сохранить данные в тхт не построчно

Есть такой код, который сохраняет текст в тхт построчно

253
C# ошибка Generic failure при TakeOffline / BringOnline ресурса кластера

C# ошибка Generic failure при TakeOffline / BringOnline ресурса кластера

При попытке выполнить TakeOffline или BringOnline у ресурса кластера получаю следующую ошибку:

252