Перед квантификатором {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);
}
}