v <- "((2-x^2+3)^2+(x-5+7)^10)^0.5"
x <- grepl("(\\(((?:[^()]++|(?1))*)\\))\\^(\\d*\\.?\\d+)", v, perl=TRUE)
while(x) {
v <- sub("(\\(((?:[^()]++|(?1))*)\\))\\^(\\d*\\.?\\d+)", "pow(\\2, \\3)", v, perl=TRUE);
x = grepl("(\\(((?:[^()]++|(?1))*)\\))\\^(\\d*\\.?\\d+)", v, perl=TRUE)
}
v
diA8LSAiKCgyLXheMiszKV4yKyh4LTUrNyleMTApXjAuNSIKeCA8LSBncmVwbCgiKFxcKCgoPzpbXigpXSsrfCg/MSkpKilcXCkpXFxeKFxcZCpcXC4/XFxkKykiLCB2LCBwZXJsPVRSVUUpCndoaWxlKHgpIHsKCXYgPC0gc3ViKCIoXFwoKCg/OlteKCldKyt8KD8xKSkqKVxcKSlcXF4oXFxkKlxcLj9cXGQrKSIsICJwb3coXFwyLCBcXDMpIiwgdiwgcGVybD1UUlVFKTsKCXggPSBncmVwbCgiKFxcKCgoPzpbXigpXSsrfCg/MSkpKilcXCkpXFxeKFxcZCpcXC4/XFxkKykiLCB2LCBwZXJsPVRSVUUpCn0Kdg==