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

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
 
class Program
{
    static void Main(string[] args)
    {
        Regex rgx = new Regex(@"(?<!\w)[a-z][0-9]?(?=(?!\w))");
        Random random = new Random();
        string line = "x + x2 -sqrt(y) + (-1+x) + max(x1, 5)";
        var variables = new Dictionary<string, int>();
        line = rgx.Replace(line, match =>
        {
            if (!variables.ContainsKey(match.Value))
            {
                variables[match.Value] = random.Next(1, 30);
            }
            return variables[match.Value].ToString();
        });
        Console.WriteLine(line);
    }
}

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


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

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

10   голосов , оценка 3.8 из 5
Похожие ответы