Начните с DFA, который описывает язык:
States: start, b, bb, bbb, bbba, bbbab, bbbabb, x
Accepting: bbb, bbba, bbbab, bbbabb
Transitions:
start, a, start
start, b, b
b, a, start
b, b, bb
bb, a, start
bb, b, bbb
bbb, a, bbba
bbb, b, x
bbba, a, bbba
bbba, b, bbbab
bbbab, a, bbba
bbbab, b, bbbabb
bbbabb, a, bbba
bbbabb, b, x
( Пример этого DFA в действии )
Оттуда вы можете конвертироватьDFA в регулярное выражение , хотя при использовании этого алгоритма вы пропустите состояние x 'dump'.Вы получите выражение, похожее на
(|a|ba|bba)*(bbb|bbba(|a|ba|bba)*(|b|bb))