Думаю о моей другой проблеме, я решил, что даже не могу создать регулярное выражение, которое будет соответствовать римским цифрам (не говоря уже о свободной от контекста грамматике, которая будет генерировать их)
Проблема заключается в совпадении только с действительными римскими цифрами. Например, 990 НЕ "XM", это "CMXC"
Моя проблема в создании регулярного выражения для этого заключается в том, что для того, чтобы разрешить или не разрешить определенные символы, мне нужно оглянуться назад. Например, возьмите тысячи и сотни.
Я могу разрешить M {0,2} C? M (для разрешения 900, 1000, 1900, 2000, 2900 и 3000). Однако, если совпадение находится на CM, я не могу разрешать следующие символы C или D (потому что я уже на 900).
Как я могу выразить это в регулярном выражении?
Если это просто не выражается в регулярном выражении, то оно выражается в контекстно-свободной грамматике?