У меня есть ужасное большое выражение, выражающее мощность в терминах оператора **
и его необходимо преобразовать в код, который использует функцию pow
. То есть я ищу регулярное выражение для поиска и замены таких терминов, как a*b**N*d
, a*pow(b,N)
, где N
- целое число.Заменить a * b ** N на a * pow (b, N)
Здесь a
, b
и c
термины, которые могут содержать xy*-+()
и целые числа и a*
, *d
может не присутствовать.
Я как-то застрял, убегая от всех этих персонажей. Я готов вкладывать некоторую ручную постобработку, поэтому регулярное выражение должно быть надежным, но не обязательно совершенным.
EDIT: Как указал Кент, существует трудность, когда b
содержит вложенные скобки. В моем случае нет вложенных скобок. Условия - все формы, приведенные в комментарии ниже.
означает 'а + (я + (x * (mn)) + j) ** p' будет преобразовано в 'a + pow ((i + (x * (mn)) + j), p)'? – Kent
Я чувствую, что это не работа для регулярного выражения ... – Kent
Да. Однако термины скорее выглядят как «4 * y ** 2 * (- 2 * x + 1) * (- y + 1) ** 2'. Что ты предлагаешь? – Jan