Перед квантификатором {x,y} ничего нет, регулярные выражения - C#

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

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

Здравствуйте, мне необходимо в входной строке вида x + x2 -sqrt(y) + (-1+x) заменить переменные на случайные числа,с переменными отделенными знаками пробела или переменными с индексом проблем не возникает, а вот заменить переменные с знаками мат операций(+ - \ *) получается ошибка: выполняется разбор "+x" - Перед квантификатором {x,y} ничего нет. Кусочек кода:
Листинг программы
  1. if (line != "")
  2. {
  3. Regex rgx = new Regex(@"(-|\+|\*|\/)[a-z][0-9]?");
  4. Random random = new Random();
  5. foreach (Match ItemMatch in rgx.Matches(line))
  6. {
  7. line = Regex.Replace(line, ItemMatch.ToString(), random.Next(1, 30).ToString());
  8. }
  9. return 0;
  10. }
Я так понимаю что это происходит из-за того,что найденное совпадение +x воспринимается не как строка для замены а как регулярное выражение, но как решить эту проблему я не нашел, буду благодарен за наводку.

Решение задачи: «Перед квантификатором {x,y} ничего нет, регулярные выражения»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text.RegularExpressions;
  4.  
  5. class Program
  6. {
  7.     static void Main(string[] args)
  8.     {
  9.         Regex rgx = new Regex(@"(?<!\w)[a-z][0-9]?(?=(?!\w))");
  10.         Random random = new Random();
  11.         string line = "x + x2 -sqrt(y) + (-1+x) + max(x1, 5)";
  12.         var variables = new Dictionary<string, int>();
  13.         line = rgx.Replace(line, match =>
  14.         {
  15.             if (!variables.ContainsKey(match.Value))
  16.             {
  17.                 variables[match.Value] = random.Next(1, 30);
  18.             }
  19.             return variables[match.Value].ToString();
  20.         });
  21.         Console.WriteLine(line);
  22.     }
  23. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы