Php regex для математического уравнения

#php #regex #preg-replace

#php #регулярное выражение #preg-заменить

Вопрос:

У меня есть строка, содержащая математическое уравнение следующего вида

 $eq = '(x^2) * (x^3) = x^5';
  

мне нужно заменить ^ и изменить значение на функцию, связанную с php

 $eq = 'pow(x, 2) * pow(x, 3) = pow(x, 5)';
  

я пытался:

 $eq = preg_replace('/(d )w^w(d )/', "pow($1, $2)", '(x^2) * (x^3) = x^5');
  

но не работает.

Комментарии:

1. /(w )s*^s*(w )/

Ответ №1:

Ваше регулярное выражение (d ) w ^ w(d ) не улавливает (x ^ 2), потому что оно должно иметь число перед x и что-то между ^ и d .

Если вы хотите сделать некоторые параметры необязательными, вы можете постфиксить их с помощью «?»

Если все ваши элементы имеют тип (x ^ n) или x ^ n, это регулярное выражение работает:

 $eq = preg_replace('/(?(w )^(d ))?/', "pow($1, $2)", $eq);
  

Ответ №2:

 $eq          = '(x^2) * (x^3) = x^5';
$replacement = 'pow($1,$2)';

print preg_replace('/(?(x)^(d))? /', $replacement, $eq);