Как правильно обработать текст в C#?

Задача:
Этот текст
...
X13.41Y-24.94
G00Z5.00
G00X7.28Y-33.17
G01Z0.00F600
G02X6.45Y-32.08I3.88J3.86
...


Необходимо добавить параметр G5 в начало строк начинающихся с координат (X или Y), и разделить параметры пробелом. Что бы вышло вот так.
...
G5 X13,1 Y-24,94
G0 Z5,00
G0 X7,28 Y-33,17
G1 Z0,00
G2X 6,45 Y-32,08 I3,88 J3,86
...


Использую:
Regex regex = new Regex(@"\.");
textBox1.Text = regex.Replace(textBox1.Text, ",");
Regex regzero = new Regex(@"F600");
textBox1.Text = regzero.Replace(textBox1.Text, "");

Regex regGX = new Regex(@"^X");
textBox1.Text = regzero.Replace(textBox1.Text, "G5X");
Regex regX = new Regex(@"X");
textBox1.Text = regzero.Replace(textBox1.Text, " X");
Regex regY = new Regex(@"Y");
textBox1.Text = regzero.Replace(textBox1.Text, " Y");
Regex regI = new Regex(@"I");
textBox1.Text = regzero.Replace(textBox1.Text, " I");
Regex regJ = new Regex(@"J");
textBox1.Text = regzero.Replace(textBox1.Text, " J");


Отрабатывает только 2 первых выражения...

Как можно решить эту проблему и в чем моя ошибка?

P.S.
По факту это блок программы, который не работает, в идеале, необходимо умножить значение каждого параметра на 1000 и заменять X и Y на разницу с их последними значениями(перевод абсолютных координат в относительные). ΔX=X1-X0, Y соответственно. И заменить строки G1 Z0,00 и G0 Z5,00 на M98P0002 и M98P0003.Выйти должно вот так
...
G5 X13100 Y-24940 //предположим, что это стартовые координаты
M98P0002 //заменяем G00Z5.00 на M98P0002
G0 X-5820 Y-9230 //положение этих координат относительно предыдущих
M98P0003 //заменяем G01Z0.00 на M98P0003
G2X -830 Y-1090 I3880 J3860 //параметры I и J менять не нужно, только *1000
...


Без комментариев

...
G5 X13100 Y-24940
M98P0002
G0 X-5820 Y-9230
M98P0003
G2X -830 Y-1090 I3880 J3860
...
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Regex regex = new Regex(@"X(-?\d+)\.(\d+)Y(-?\d+)\.(\d+).*?G00Z(-?\d+)\.(\d+).*?G00X(-?\d+)\.(\d+)Y(-?\d+)\.(\d+).*?G01Z(-?\d+)\.(\d+).*?G02X(-?\d+)\.(\d+)Y(-?\d+)\.(\d+)I(-?\d+)\.(\d+)J(-?\d+)\.(\d+)", RegexOptions.Singleline);
textBox1.Text = regex.Replace(textBox1.Text, "G5 X$1,$2 Y$3,$4\nG0 Z$5,$6\nG0 X$7,$8 Y$9,$10\nG1 Z$11,$12\nG2 X$13,$14 Y$15,$16 I$17,$18 J$19,$20");
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Akui_Aru
@Akui_Aru Автор вопроса
#ТЫЖ
Необходимо добавить параметр G5 в начало строк начинающихся с координат (X или Y), и разделить параметры пробелом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы