#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);