Your answer is also correct. Regular languages do not have *unique* regexes. For example, $0^\ast$, $0^\ast 0^\ast$, and $0^\ast 0^\ast 0^\ast$ are different regexes, all representing the language of strings containing only zeroes. The problem of deciding whether two regexes are *equivalent* (i.e., whether they represent the same language) is actually *very hard*, as mentioned in [this answer][1]. (Spoiler: it is $\mathbf{PSPACE}$-complete.) As to your other question (regarding a CFG for the language), here is a hint: *divide and conquer*. Split the regex in multiple "chunks" and try to generate each chunk separately, then pack everything together with the grammar's start symbol. [1]: https://cs.stackexchange.com/q/12278