tl; др
Я ищу регулярное выражение, которое соответствует только следующим строкам:
- Пустая строка
+
(=)
+ (=)
#
Мотивация:
В шахматах ход может (среди прочего) быть чеком или помощником чека.Пока это не чек-партнёр, игрок может сделать ничью своему противнику после выполнения хода.
Я делаю игрушечный проект, который анализирует шахматные игры, написанные в соответствии с правилами ФИДЕ;они указывают, что следующие суффиксы используются для обозначения предыдущих возможностей:
- Чек обозначается
+
; - Чек сопряжения указывается
#
; - Предложение на ничью представлено
(=)
.
Таким образом, единственный действительный суффикс:
(ничего:ход не является чеком, и игрок не предлагает ничью). (=)
(без чека; предлагается ничья) +
(чек; ничья не предлагается).. + (=)
(чек; предлагается ничья). #
(чек, ничья не может быть предложена, так как игра окончена).
Я изо всех сил пытаюсь превратить это в регулярное выражение.Я хочу выразить:
("+" (0 or 1 times) followed by "(=)" (0 or 1 times)) or ("#" (0 or 1 times))
Я сделал несколько попыток, но все они терпят неудачу.В духе демонстрации своей работы я добавляю эту, но это, вероятно, мусор: ((\+{0,1}|(\+ (=)){0,1})|#){0,1}