Build a regular expression that specifies the language L in the alphabet Σ = {a, b, c}:

Build a regular expression that specifies the language L in the alphabet Σ = {a, b, c}: L = {w : w does not contain aaab}.

For this task, you also need to build a deterministic finite automaton, but I coped with this without problems.

I know how to build a regular expression so that the word contains the fragment aaab. regular expression:

(a+b+c)^* (aaab) (a+b+c)^*

(*) - iteration

But I don't know how to build the regular so that it doesn't contain the aaab fragment.

If you have any thoughts or ideas, I would be grateful if you share them.

(As an example, I can give a regular expression for the language L = {w: there is no fragment abac in the word w}. Alphabet {a,b,c}.regular expression

Not having $$aaab$$ is equivalent to requiring that all (maximal) runs of at least three $$a$$s are either followed by $$c$$ or are word-final. As such we control how $$a$$-runs appear when building the regex: in non-word-final positions we allow $$a^*c$$ as a block, then add the special cases $$ab$$ and $$aab$$ alongside the character-blocks $$b$$ and $$c$$. The word-final run of $$a$$ can be handled easily, and we get the final result of $$((a^*c)+ab+aab+b+c)^*a^*$$