Мне нужно на С# починить регулярное выражение, которое сейчас не совсем корректно работает, могу заплатить к сожалению максимум 2500-3000, так как больше нет, а стипендию задерживают, прошу откликнуться людей
На вход программы подается единственная строка символов. Данная строка задает присваивание переменной значения арифметического выражения в виде
ПЕРЕМЕННАЯ = ВЫРАЖЕНИЕ.
Выражение может включать:
– знаки сложения и умножения («+» и «*»);
– круглые скобки («(» и «)»);
– константы (например, 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)(?!))
)$";
Была проверка сбалансированности скобок и прочее (смотреть вперёд назад)
Пробелы могут быть а могут и не быть во входной строке
Они могут быть вначале строки, в конце строки, перед переменными, числами, операторами, скобками, знаком = или после них, а могут пробелы и не встретится
Главное, чтоб пробелы не были возможны внутри переменных и внутри чисел, но были разрешены слева и справа от чисел, переменных, операторов и скобок (опять же пробелы могут быть или могут не быть во входной строке
Надеюсь понятно объяснил задание, нужно срочно
Вот мой регуляр на данный момент
const string pattern = @"^
(?:
\s*
(?[a-zA-Z][a-zA-Z0-9]*)
\s*(?=)\s*
(?:
(?:
(?: (?<=^|\s*|[+*()=]) (?[a-zA-Z][a-zA-Z0-9]*) (?=\s*|[+*()]|$) ) |
(?: (?<=^|\s*|[+*()=]) (?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?) (?=\s*|[+*()]|$) ) |
(?: (?<=|\s*|[a-zA-Z0-9(])(?<!\=) (?[+*]) (?=\s*|[a-zA-Z0-9(]) ) |
(? (?<=|\s*|[+*=]) (?\() (?=\s*|[a-zA-Z0-9]) ) |
(? (?<=\s*|[a-zA-Z0-9]) (?\)) (?=\s*|[+*)]|$) )
)+
\s*
)+
(?(level)(?!))
\s*
)$";
В нём слишком все напихано подряд из-за чего случаются неоднозначности
Сейчас здесь как минимум разрешён пробел внутри переменных и чисел и не всегда корректно отрабатывает
Мне главное чтоб была такая структура как в моей регулярке
Прикрепил код лаба код.txt на C#, код отрабатывает корректно, нужно только сделать рабочий регуляр, код сам не трогать, в input.txt просто пример входного файла
Презентация предпоследний слайд это структура примерная
в УМП ТЯПиМТ 2024 теория если нужна (стр 57 и далее) таблица со всякими спецсимволами регулярки на 70 вроде странице
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |