php简单的正则表达式搜索和替换和随机子串

时间:2014-11-08 21:10:10

标签: php regex latex

我有一个用于乳胶的字符串,后来字符串是...粗略

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

罪恶也可能是cos,tan,sec,log等。 指数也可以是任何整数,浮点数或变量,参数可以是任何东西..

我想要一个将其转换为

的正则表达式函数
$string  = "\\sin^{2}\\left(x\\right)";

或更一般地

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

转为"f^{n}(t)"; 我提前道歉,我觉得这应该是非常容易的,我只是在学习这个。

哦,我也想将此限制为仅包含trig函数日志的字符串和其他一些我的函数无法正确打印的字符串。

2 个答案:

答案 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)
相关问题