Я работаю на некоторых заданиях для моего класса компилятора и у меня есть следующая проблема:Возможно ли упростить это регулярное выражение?
Написать регулярное выражение для всех строк через х и б-х, которые содержат нечетное число a или нечетное число b (или оба).
После много досок работы я придумал следующее решение:
(aa|bb)* (ab|ba|a|b) ((aa|bb)* (ab|ba) (aa|bb)* (ab|ba) (aa|bb)*)*
однако, это наиболее упрощенная я могу получить его? Я подумал о том, чтобы построить DFA, пытаясь свести к минимуму количество состояний там, чтобы увидеть, облегчит ли это мне упрощение, но я решил, что сначала спрошу гуру-регекса на SO.
Какие дополнительные функции регулярного выражения вы можете использовать? –
он использует регулярные выражения в области компьютерных наук, а не PCRE или posix regex;) Они разные. –
@Brad Gilbert, я предполагаю, что нам разрешено использовать регулярное выражение, которое было введено до сих пор в книге, что мало. (*, +,?, |, [], ^). Довольно просто. – 2009-09-16 19:33:27