BIG EDIT:
Because it's so trivially unsolvable, I had a quick look at the posted solution.
We're reading it wrong.
Take the first regex on the top row, one you included in your example:
[^X]*(DN|TE|NI)
You're supposed to fill that in from the bottom to the top.
In other words, the first letter goes immediately to the right of [^c]*[^R]*III.* - that square has to be a 'not X'. The hex immediately below it has to be an E, I, or N.