i have a string to be used for latex later the string is... roughly
$string = "\\sin\\left(x\ight)^{2}";
where the sin could also be cos, tan, sec, log, etc.. the exponent could also be any integer, float or variable, the argument could be anything..
I would like a regex function that turns it into
$string = "\\sin^{2}\\left(x\ight)";
or more generally
generalstring = "f(t)^{n}";
to be turned into "f^{n}(t)";
my apologies in advance, i have a feeling this should be extremely easy to do, I'm just learning this.
oh also i would like to restric this to only strings with trig functions logs and some other ones where my functions are not printing correctly.
Please try the following code:
$string = preg_replace('/\\\\(\w+)\\\\left\\((.+?)\\\ight\\)\\^\\{([^}]+)\\}/','\\\\$1^{$3}\left($2ight)',$string);
For me, the output is:
print "$string
";
\sin^{2}\left(xight)
Another test:
$string = "\\cos\\left(3x\ight)^{2.6}";
Output:
\cos^{2.6}\left(3xight)
It also works for multiple functions, since preg_replace
is global per default.
$string = "\\sin\\left(x\ight)^{3}\\cos\\left(y\ight)^{2}";
\sin^{3}\left(xight)\cos^{2}\left(yight)
Edit: Please note the corrected expression.
A regex like
(\\{2}sin|cos|tan|sec|log)([^^]*)(\^\{[^}]*\})
see how the regex matches http://regex101.com/r/iW4pZ3/1
The replacement string is \\1\\3\\2
preg_replace("/(\\\\{2}sin|cos|tan|sec|log)([^^]*)(\\^\\{[^}]*\\})/","\\1\\3\\2","\\\\sin\\\\left(x\\\ight)^{2}");
would produce an output as
\\sin^{2}\\left(x\ight)