Мне нужно на С# написать регулярное выражение, которое будет проверять на корректность следующую строку
На вход программы подается единственная строка символов. Данная строка задает присваивание переменной значения арифметического выражения в виде
ПЕРЕМЕННАЯ = ВЫРАЖЕНИЕ.
Выражение может включать:
– знаки сложения и умножения («+» и «*»);
– круглые скобки («(» и «)»);
– константы (например, 5; 3.8; 1e+18, 8.41E-10);
– имена переменных (последовательности букв и цифр, начинающиеся с буквы).
Программа должна с помощью регулярного выражения проверить,
является ли заданное входное выражение корректным
Необходимо регулярное выражение сделать так, чтоб была возможность смотреть вперёд или назад (я тут не понимаю, но сказали, что это нужно)
И чтоб регулярное выражение выглядело по структуре примерно так
const string pattern = @"^
(?:
(?:
(?: (?<=^|,|\[) (?[a-z]+) (?=,|\[|\]) ) |
(?: (?<=,|\[) (?\d+) (?=,|\]) ) |
(?: (?<=[a-z]|\d|\]) (?,) (?=[a-z]|\d) ) |
(? (?<=[a-z]) (?\[) (?=[a-z]|\d) ) |
(? (?<=[a-z]|\d|\]) (?\]) (?=,|\]|$) )
)+
(?(level)(?!))
)$";
Была проверка сбалансированности скобок и прочее
Пробелы могут быть а могут и не быть во входной строке
Они могут быть вначале строки, перед переменными после переменных, а могут не быть
Аналогично пробелы могут быть или не быть перед числами, операторами, скобками, знаком =
Главное, чтоб пробелы не были возможны внутри переменных и внутри чисел
То есть 10 . 5 неверно, или 1 . 1 e-10 тоже не верно, должно быть 10.5 и 1.1e-10
Надеюсь понятно объяснил задание, нужно срочно
В методических указаниях это Лабораторная работа 2 вариант 2
В презентации пример на предпоследнем (56) слайде
Пример корретной входной строки
COST=((11.15+1.1e-25)*1.4e-10)+1*1e10
или
COST = ( ( 11.15 + 1.1e-25 ) * 1.4e-10 ) + 1 * 1e10
или
COST=(11.15+1.1e-25)* 1.4e-10 + 1 * 1e10
или
res1 =15*(1.15+1e10) + 2.2e-15 * (22.5 + 17e+10)
Пример некорректной строки
re s 1 = 1 5 * так как пробелы не должны быть внутри переменных или чисел
res1=(((((15.e10) так как несбалансированные скобки и ещё не может быть 15.e10 может быть 15.0e10 или 15.15e-10 и прочее, то есть не может быть число 1. и пусто
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |