2015-03-30 4 views
-2

Пример кода в Latex:Использование Python Regex для упрощения LATEX фракциях

%Chebyshev of second kind 
\begin{equation} 
\sum_{\ell \hiderel{=} 0}^n\frac{(\ChebyU{\ell}@{x} )^2}*{ \frac{\pi}{2} }*=\frac{ 2^n }{ \frac{\pi}{2} 2^n+1 }\frac{ \ChebyU{n+1}@{x} \ChebyU{n}@{y} - \ChebyU{n}@{x} \ChebyU{n+1}@{y} }{x-y} 
\end{equation} 

\frac{(\ChebyU{\ell}@{x})^2}*{\frac{\pi}{2}} есть доля я смотрю для этого конкретного случая. Поскольку это дробь в знаменателе другой фракции, я бы хотел использовать регулярное выражение Python, чтобы изменить это значение с a/(b/c) на (ac)/b.

Пример вывода:

%Chebyshev of second kind 
\begin{equation} 
\sum_{\ell \hiderel{=} 0}^n\frac{(2 \ChebyU{\ell}@{x} )^2}{\pi}*=\frac{ 2^n }{ \frac{\pi}{2} 2^n+1 }\frac{ \ChebyU{n+1}@{x} \ChebyU{n}@{y} - \ChebyU{n}@{x} \ChebyU{n+1}@{y} }{x-y} 
\end{equation} 

Конечный результат: \frac{(2\ChebyU{\ell}@{x})^2}{\pi} является фракция, что регулярное выражение должно привести к

Как бы я идти об этом с регулярным выражением в Python.?

ответ

1

Это регулярное выражение, которое должно работать. Обратите внимание, что я внес изменения в ваше выражение LaTeX, потому что я думаю, что была ошибка (знак *).

astr = '\frac{(\ChebyU{\ell}@{x})^2}{\frac{\pi}{2}}' 

import re 
pat = re.compile('\\frac\{(.*?)\}\{\\frac\{(.*?)\}\{(.*?)\}\}') 
match = pat.match(astr) 
if match: 
    expr = '\\frac{{{0}*{2}}}{{{1}}}'.format(*match.groups()) 
    print expr 

NB: Я не использовал пробелы в исходном выражении.

+0

сожалею о позднем ответе, но спасибо, что это работает. – zara

+0

добро пожаловать :-) –

Смежные вопросы