If you can be sure that E(n) only appears with an explicit integer n and that the parenteses () never appear elsewhere, you don't need regular expressions:
"[ [ 0, 1, -E(3)^2 ], [ 0, -E(3), E(3) ], [ 1, 0, 0 ] ]"
StringReplace[%, {"[" -> "{", "]" -> "}"}]
StringReplace[%, {"E(" -> "Exp[2Pi I/(", ")" -> ")]"}]
% // ToExpression