Перед квантификатором {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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д