Написать регулярное выражение на C#

Отменен
Заказ
6476363
Раздел
Математические дисциплины
Предмет
Теория алгоритмов и автоматов
Антиплагиат
Не указан
Срок сдачи
28 Дек 2024 в 04:00
Цена
3 000 ₽
Блокировка
10 дней
Размещен
27 Дек 2024 в 21:50
Просмотров
49
Описание работы

Мне нужно на С# починить регулярное выражение, которое сейчас не совсем корректно работает, могу заплатить к сожалению максимум 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%
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Темы журнала
Показать ещё
Прямой эфир