php простой поиск по регулярному выражению, замена и перемешивание подстроки

у меня есть строка для латекса позже строка … примерно

$string  = "\\sin\\left(x\\right)^{2}";

где грех также может быть cos, tan, sec, log, и т.д ..
показатель степени также может быть любым целым числом, числом с плавающей запятой или переменной, аргумент может быть любым.

Я хотел бы функцию регулярного выражения, которая превращает его в

$string  = "\\sin^{2}\\left(x\\right)";

или в более общем плане

generalstring = "f(t)^{n}";

быть превращенным в "f^{n}(t)";
Мои извинения заранее, я чувствую, что это должно быть очень легко сделать, я только учусь этому.

о, также я хотел бы ограничить это только строками с журналами функций триггера и некоторыми другими, где мои функции печатаются неправильно.

0

Решение

Пожалуйста, попробуйте следующий код:

$string = preg_replace('/\\\\(\w+)\\\\left\\((.+?)\\\\right\\)\\^\\{([^}]+)\\}/','\\\\$1^{$3}\left($2\right)',$string);

Для меня вывод:

print "$string\n";

\sin^{2}\left(x\right)

Еще один тест:

$string  = "\\cos\\left(3x\\right)^{2.6}";

Выход:

\cos^{2.6}\left(3x\right)

Это также работает для нескольких функций, так как preg_replace является Глобальный по умолчанию.

$string = "\\sin\\left(x\\right)^{3}\\cos\\left(y\\right)^{2}";

\sin^{3}\left(x\right)\cos^{2}\left(y\right)

Изменить: Обратите внимание на исправленное выражение.

1

Другие решения

Регулярный как

(\\{2}sin|cos|tan|sec|log)([^^]*)(\^\{[^}]*\})

посмотрите, как совпадает регулярное выражение http://regex101.com/r/iW4pZ3/1

Строка замены \\1\\3\\2

preg_replace("/(\\\\{2}sin|cos|tan|sec|log)([^^]*)(\\^\\{[^}]*\\})/","\\1\\3\\2","\\\\sin\\\\left(x\\\\right)^{2}");

будет производить вывод как

\\sin^{2}\\left(x\\right)
0

По вопросам рекламы [email protected]