регулярное выражение не волшебная пуля разбора.Вместо того, чтобы пытаться выполнить синтаксический анализ с помощью регулярных выражений, почему бы не получить нужный вывод более просто и просто прочитать его?
df -Bk| awk '{print $2, $3}'
Это даст вам набор строк с полями, разделенными пробелом.Разбор этого становится вопросом вызова string.Split ()
string[] output_lines; // presumably holds the output of df
for (int i = 0; i < output_lines.Length; i++)
{
if (i == 0)
continue;
string[] b_u = output_lines[i].Split(" ");
string blocks = b_u[0];
string used = b_u[1];
}