Чтобы быть уверенным, что ничего не запутано, вам понадобится парсер, который знает, когда на самом деле ^
используется как символ власти (а не, например, в комментарии, строке).
Но вы можете сойти с помощью простого регулярного выражения:
Заменить (\w+)\s*\^\s*(\w+)
на pow(\1,\2)
.
Это должно охватывать большинство случаев и быть достаточно безопасным.
Конечно, он потерпит неудачу, если будет больше параметров, как в (a + b) ^ (c + d)
и т. Д. Это регулярное выражение соответствует только вещам вроде a^b
или 2^3
. Он также не соответствует x^0.5
правильно, поэтому, если это может произойти, вам потребуется ([\w.]+)\s*\^\s*([\w.]+)