我有一个用于乳胶的字符串,后来字符串是...粗略
$string = "\\sin\\left(x\\right)^{2}";
罪恶也可能是cos,tan,sec,log等。 指数也可以是任何整数,浮点数或变量,参数可以是任何东西..
我想要一个将其转换为
的正则表达式函数$string = "\\sin^{2}\\left(x\\right)";
或更一般地
generalstring = "f(t)^{n}";
转为"f^{n}(t)";
我提前道歉,我觉得这应该是非常容易的,我只是在学习这个。
哦,我也想将此限制为仅包含trig函数日志的字符串和其他一些我的函数无法正确打印的字符串。
答案 0 :(得分:1)
请尝试以下代码:
$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 :(得分:0)
像
这样的正则表达式(\\{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)