Перед квантификатором {x,y} ничего нет, регулярные выражения - C#
Формулировка задачи:
Здравствуйте, мне необходимо в входной строке вида x + x2 -sqrt(y) + (-1+x) заменить переменные на случайные числа,с переменными отделенными знаками пробела или переменными с индексом проблем не возникает, а вот заменить переменные с знаками мат операций(+ - \ *) получается ошибка: выполняется разбор "+x" - Перед квантификатором {x,y} ничего нет.
Кусочек кода:
Я так понимаю что это происходит из-за того,что найденное совпадение +x воспринимается не как строка для замены а как регулярное выражение, но как решить эту проблему я не нашел, буду благодарен за наводку.
Листинг программы
- 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,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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д